从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');