Простой оператор COPY в PostgreSQL 8.4

Вопрос: Я пытаюсь скопировать данные таблицы в файл. У меня есть небольшая таблица базы данных в локальной машине Windows, и этот код не имеет проблем. Когда я использую это в среде разработки (все еще окна, разные базы данных), я получаю сообщение об ошибке. В настоящее время мои стандартные_конформные_строки отключены. Этот запрос: COPY some_table TO 'C:temptest.csv'

Вопрос:

Я пытаюсь скопировать данные таблицы в файл. У меня есть небольшая таблица базы данных в локальной машине Windows, и этот код не имеет проблем. Когда я использую это в среде разработки (все еще окна, разные базы данных), я получаю сообщение об ошибке.

В настоящее время мои стандартные_конформные_строки отключены.

Этот запрос:

COPY some_table TO ‘C:\temp\test.csv’ WITH CSV HEADER;

Дает эту ошибку:

WARNING: nonstandard use of \ in a string literal LINE 1: COPY t_table TO ‘C:\temp\test.csv’ WITH CSV HEADER; ^ HINT: Use the escape string syntax for backslashes, e.g., E’\’. ERROR: relative path not allowed for COPY to file ********** Error ********** ERROR: relative path not allowed for COPY to file SQL state: 42602

Я пытался:

‘C:temptest.csv’ ‘C:\temp\test.csv’ ‘C:/temp/test.csv’ ‘C:/temp/test.csv’

И во всех моих тестах каретка ^ в сообщении об ошибке указывает на “C :.

Лучший ответ:

Вы используете PostgreSQL для Linux, а не для Windows. Просто используйте клиент Windows.

COPY – команда на стороне сервера. Он ожидает путь на сервере. Этот файл находится на вашем клиентском ПК Windows, поэтому сервер не может получить к нему доступ.

Вместо этого используйте copy из psql. Или используйте импортер PgAdmin CSV.

(Более новые версии PostgreSQL дадут вам HINT об этом в сообщении об ошибке.)

Оцените статью
Добавить комментарий