postgresql — psql \ copy ошибка команды при выполнении из программы на c ++

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

Решение

\copy это psql команда, а не команда SQL. psql Команды работают только внутри psql ракушка. Поскольку вы говорите напрямую с базой данных, вам нужно использовать COPY Команда SQL Тем не мение, COPY обычно работает с файловой системой сервера, а не с клиентской:

COPY с именем файла указывает серверу PostgreSQL непосредственно выполнять чтение или запись в файл. Файл должен быть доступен для сервера, а имя должно быть указано с точки зрения сервера. Когда указано STDIN или STDOUT, данные передаются через соединение между клиентом и сервером.

Вы, вероятно, должны будете использовать опцию STDIN и PQputCopyData отправить данные на сервер PostgreSQL.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]