0

2 つのファイルを生成します。1 つはデータベースに格納するためのデータを含み、もう 1 つは SQL にアップロードするために必要なものを含みます。コードがコンパイルされていません。理由がわかりません。補足として、私は 10,000 のリレーション、20000 のリレーション、200 のリレーションをアップロードしています。

#include<iostream>
#include<fstream>
#include<cstdlib>

using namespace std;

int main()
{
    static const char alphanum[] =
    "0123456789"
    "!@#$%^&*"
    "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    "abcdefghijklmnopqrstuvwxyz";
    int i;
    ofstream outFile;
    outFile.open("out.txt");

    for ( i = 1 ; i <= 30200 ; i++ )
{       
  if(i<=10000)
    outFile << rand() % 10  << "|" << alphanum[rand() % 8]<< "|" << alphanum[rand() % 10]<< "|" << rand() % 9 << "\n";

  else if(i>10000 && i<=30000)
    outFile << rand() % 11 << "|" << alphanum[rand() % 200] << "|" << rand() % 10  << "|" << rand() % 12 << "|" << "Nov 11 2013\n";
  else if(i>30000)
    outFile << rand() % 10 << "|" << alphanum[rand() % 8] << "\n";
}
    outFile.close("out.txt");

    outFile.open("populate.txt");
    for(i=1; i<=30200; i++)
      {
      if( i<=10000 )
        outFile << "LOAD DATA\n" << 
          "LOCAL INFILE "data/out.txt"\n" << 
          "REPLACE INTO TABLE Users\n" << 
          "FIELDS TERMINATED BY '|'\n"<<
          "(UserID, Username, Name, NOF);\n";

      else if ( i>10000 && i<=30000 )

        outFile >> "LOAD DATA\n"<< 
          "LOCAL INFILE "data/out.txt"\n" << 
          "REPLACE INTO TABLE Tweets\n" << 
          "FIELDS TERMINATED BY '|'\n" <<
          "(ID, Text, Length, Rating, Timestamp);\n";

      else if (i>30000)

        outFile  >> "LOAD DATA\n" << 
          "LOCAL INFILE "data/out.txt"\n" << 
          "REPLACE INTO TABLE Follows\n" << 
          "FIELDS TERMINATED BY '|'\n" <<
          "(UserID, Username);\n";
      }
    return 0;
}

助けてくれてありがとう

4

1 に答える 1

0

問題は、に書き込もうとするときに、 output( ) 演算子<<と input( ) 演算子を混在させていることです。つまり、出力の代わりに入力演算子を使用します。>>outFile

あなたもこの問題を抱えています

"LOCAL INFILE "data/out.txt"\n"

ってことじゃない?

"LOCAL INFILE data/out.txt\n"

また

"LOCAL INFILE \"data/out.txt\"\n"

または(SQL文字列が一重引用符で囲まれていることを知っている)

"LOCAL INFILE 'data/out.txt'\n"

いくつかの置換をコピー アンド ペーストしたことは明らかなので、関数のように、すべての一般的なコードを 1 か所にまとめたものを作成することを検討することをお勧めします。このように、共通コードを変更するときは、複数の場所ではなく、1 つの場所で行うだけで済みます (1 つを忘れる可能性があります)。

于 2013-11-13T14:26:32.970 に答える