2013-05-17 39 views
0
ERROR: syntax error at or near "\" 
LINE 1: \copy mytable FROM urishFile WITH (FORMAT csv, DELIMITER ','... 
     ^

从C++程序运行命令时出现此错误。从C++程序执行时psql copy命令错误

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

我做错了什么?

回答

1

\copy是一个psql命令,而不是SQL命令。 psql命令仅在psql外壳内运行。由于您直接与数据库交谈,因此您需要使用COPY SQL命令。

副本文件名指示直接读取或写入文件PostgreSQL服务器:但是,COPY通常与服务器的文件系统,而不是客户端的工作。该文件必须可供服务器访问,并且该名称必须从服务器的角度指定。当指定STDIN或STDOUT时,数据通过客户端和服务器之间的连接传输。

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