从stdin复制不使用libpqxx在C ++中插入postgres

时间:2013-09-24 12:21:54

标签: c++ postgresql stdin libpqxx

我一直在尝试使用stdin中的副本插入批量数据,但它无法正常工作。 任何人都可以告诉我我做错了什么:

// Redirecting file input to stdin
std::ifstream in("infile.csv");
std::streambuf *cinbuf = std::cin.rdbuf(); // save old buffer
std::cin.rdbuf(in.rdbuf());     // redirect std::cin to in
std::string copyQuery("COPY tableName (col1,col2) FROM STDIN DELIMITER ',' CSV HEADER");

//Database connection
std::string conninfo("host=ip port=5432 dbname=tdb user=tdbuser password=tdbpsswd);
pqxx::connection conn(conninfo);
pqxx::work transaction(conn);

pqxx::result res = transaction.exec(copyQuery);
transaction.commit();

std::cin.rdbuf(cinbuf); // reset to standard input again

我没有找到我尝试在表格中插入的数据。

1 个答案:

答案 0 :(得分:0)

我没有看到您实际将数据传递到libpqxx的位置。有关如何执行此操作的信息,请参阅有关tablestreams的ligpqxx文档。 http://pqxx.org/devprojects/libpqxx/doc/3.1/html/Reference/a00100.html