ERROR: syntax error at or near "\"
LINE 1: \copy mytable FROM urishFile WITH (FORMAT csv, DELIMITER ','...
^
从c ++程序运行命令时出现此错误。
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);
}
从psql提示符运行相同的命令时,它可以正常运行。
mydatabase=> \copy mytable FROM urishFile WITH (FORMAT csv, DELIMITER ',', NULL 'NULL');
我做错了什么?
答案 0 :(得分:1)
\copy
是psql
命令,而不是SQL命令。 psql
命令仅在psql
shell中运行。由于您直接与数据库通信,因此需要使用COPY
SQL命令。但是,COPY
通常适用于服务器的文件系统而不是客户端的文件:
带有文件名的COPY指示PostgreSQL服务器直接读取或写入文件。该文件必须可供服务器访问,并且必须从服务器的角度指定名称。指定STDIN或STDOUT时,数据通过客户端和服务器之间的连接传输。
您可能需要使用STDIN选项和PQputCopyData
将数据发送到PostgreSQL服务器。