Вопрос:
Я пытаюсь скопировать данные таблицы в файл. У меня есть небольшая таблица базы данных в локальной машине 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 об этом в сообщении об ошибке.)