0

生成 2 个文件,其中 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

问题是您在尝试写入时混合了输出( <<)和输入( )运算符。也就是说,您使用输入运算符而不是输出。>>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"

由于很明显您刚刚完成了一些替换的复制粘贴,您可能需要考虑制作一些将所有常见代码放在一个地方的东西,比如一个函数?这样,当您更改通用代码时,您只需在一个地方进行而不是在多个地方进行(有可能忘记一个)。

于 2013-11-13T14:26:32.970 回答