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');
Что я сделал не так?
\copy
это psql
команда, а не команда SQL. psql
Команды работают только внутри psql
ракушка. Поскольку вы говорите напрямую с базой данных, вам нужно использовать COPY
Команда SQL Тем не мение, COPY
обычно работает с файловой системой сервера, а не с клиентской:
COPY с именем файла указывает серверу PostgreSQL непосредственно выполнять чтение или запись в файл. Файл должен быть доступен для сервера, а имя должно быть указано с точки зрения сервера. Когда указано STDIN или STDOUT, данные передаются через соединение между клиентом и сервером.
Вы, вероятно, должны будете использовать опцию STDIN и PQputCopyData
отправить данные на сервер PostgreSQL.
Других решений пока нет …