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

我做错了什么?

4

1 回答 1

1

\copypsql命令,而不是 SQL 命令。psql命令只能在psqlshell 内部工作。由于您直接与数据库对话,因此您需要使用COPYSQL 命令。但是,COPY通常使用服务器的文件系统而不是客户端的文件系统:

带有文件名的 COPY 指示 PostgreSQL 服务器直接读取或写入文件。服务器必须可以访问该文件,并且必须从服务器的角度指定名称。当指定 STDIN 或 STDOUT 时,数据通过客户端和服务器之间的连接传输。

您可能需要使用 STDIN 选项并将PQputCopyData数据发送到 PostgreSQL 服务器。

于 2013-05-17T20:42:14.073 回答