从c+;执行时出现psql\copy命令错误+;程序 < >我在运行C++程序的命令时出错。
从c+;执行时出现psql\copy命令错误+;程序 < >我在运行C++程序的命令时出错。,c++,postgresql,psql,libpq,C++,Postgresql,Psql,Libpq,ERROR: syntax error at or near "\" LINE 1: \copy mytable FROM urishFile WITH (FORMAT csv, DELIMITER ','... ^ 在psql提示符下运行相同的命令时,它不会出错 command = "\\copy mytable FROM urishFile WITH (FORMAT csv, DELIMITER ',', NULL 'NULL');"; executCommand(co
ERROR: syntax error at or near "\"
LINE 1: \copy mytable FROM urishFile WITH (FORMAT csv, DELIMITER ','...
^
在psql提示符下运行相同的命令时,它不会出错
command = "\\copy mytable FROM urishFile WITH (FORMAT csv, DELIMITER ',', NULL 'NULL');";
executCommand(conn, command);
void executCommand(PGconn *conn, std::string command) {
PGresult *res; // holds query result
res = PQexec(conn, command.c_str());
if (PQresultStatus(res) != PGRES_COMMAND_OK) {
fprintf(stderr, "%s", PQerrorMessage(conn));
PQclear(res);
exit_nicely(conn);
}
PQclear(res);
}
我做错了什么?\copy
是一个命令,而不是SQL命令psql
命令仅在psql
shell中工作。由于您直接与数据库对话,因此需要使用SQL命令。但是,COPY
通常用于服务器的文件系统,而不是客户端的:
使用文件名复制指示PostgreSQL server直接读取或写入文件。服务器必须可以访问该文件,并且必须从服务器的角度指定名称。当指定STDIN或STDOUT时,数据通过客户端和服务器之间的连接传输
您可能需要使用STDIN选项并将数据发送到PostgreSQL服务器
mydatabase=> \copy mytable FROM urishFile WITH (FORMAT csv, DELIMITER ',', NULL 'NULL');