代码之家  ›  专栏  ›  技术社区  ›  tourist

将CSV文件加载到MySQL C++中

  •  0
  • tourist  · 技术社区  · 8 年前

    .txt 文件到MySQL。

    #include <stdlib.h>
    #include <iostream>
    
    #include <chrono>
    
    
    #include <cppconn/driver.h>
    #include <cppconn/exception.h>
    #include <cppconn/resultset.h>
    #include <cppconn/statement.h>
    #include <cppconn/prepared_statement.h>
    #define HOST "localhost"
    #define USER "root"
    #define PASS "admin"
    #define DB "test_index"
    using namespace std;
    int main(int argc, const char **argv)
    {
        const string url = HOST;
        const string user = USER;
        const string pass = PASS;
        const string database = DB;
    
        sql::Driver *driver = NULL; 
        sql::Connection *con = NULL;
        //sql::Statement *stmt;
        sql::ResultSet *res = NULL;
    
        /* Create a connection */
        driver = get_driver_instance();
        con = driver->connect("tcp://127.0.0.1:3306", "root", "admin");
        /* Connect to the MySQL test database */
        con->setSchema("test_index");
    
        sql::PreparedStatement *prep_stmt = NULL;
        prep_stmt = con->prepareStatement("LOAD DATA INFILE 'C:\ProgramData\MySQL\MySQL Server 8.0\Data\test_index\data.txt' INTO TABLE dataload_file_raw fields terminated by '\t'");
        bool ret = prep_stmt->execute();
        cout << "The data is inserted" << ret << endl;
        delete res;
        delete prep_stmt;
    
        con->close();
        return 0;
    }
    

    prep_stmt->execute()

    1 回复  |  直到 8 年前
        1
  •  0
  •   ArtHare    8 年前

    所以不是 "LOAD DATA INFILE 'C:\ProgramData\MySQL..." "LOAD DATA INFILE 'C:\\ProgramData\\MySQL..."

    否则,C++编译器会把你的‘P’(在程序数据的开头)变成一些东西,而‘M’(在MySQL的开始)变成另外一个东西,这意味着它会尝试走错的路,可能会因此而失败。字符串中的每个反斜杠都需要转义。