Копия из stdin не работает для вставки в postgres в C++ с использованием libpqxx
Я пытался вставить объемные данные, используя копию из стандартного ввода, но это не работает. Может кто-нибудь сказать мне, что я делаю не так:
// 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 ответ
Я не вижу, куда вы на самом деле передаете данные в libpqxx. Для получения информации о том, как это сделать, см. Документацию ligpqxx о табличных потоках. http://pqxx.org/devprojects/libpqxx/doc/3.1/html/Reference/a00100.html