2014-08-07 7 views
2

Я бег этого утверждения в приложении Django:Копировать в Postgresql: Абсолютный путь Интерпретируется как относительный путь

c = connections['default'].cursor() 
    query="copy (select * from analysis.\"{0}\") to STDOUT DELIMITER ',' CSV HEADER;".format(view_name) 
      with open(csvFile,'w') as f: 
       c.copy_expert(query,f) 
      f.close() 

Это не создает нужный файл CSV. Некоторые из значений отображаются в неправильных столбцах. Я пытаюсь проверить заявление SQL, запустив его в PostGreSQL:

copy (select * from analysis."S03_2005_activity_140807_153431_with_geom") to 'C:/djangoProjects/web_output/csvfiles/S03_2005_activity_140807_153431_with_geom.csv' DELIMITER ',' CSV HEADER; 

Это дает мне: «ОШИБКА: относительный путь не позволил Копировать в файл». Я рассмотрел этот вопрос, и он, как правило, является одним из двух вопросов: 1. запутать '\' и '/'. Мои косые черты должны быть правильными. 2. Сервер находится на другом компьютере. Я думал, что это может быть моей проблемой, поскольку база данных находится на внешнем компьютере, но у меня есть связь в моем Postgresql. Он также работает от Django, поэтому я не уверен, почему он не работает с PG Admin.

ответ

4

Если вы хотите хранить данные/получать данные с вашего локального компьютера и обмениваться данными с сервером Postgres на другом удаленном компьютере, вы не можете просто использовать COPY.

Попробуйте мета-команду \copy in psql. Это оболочка для команды SQL COPY и использует локальные файлы.

Вашего файл должен работать как на машине Windows, но Postgres интерпретирует это как местных файл на сервере, который, вероятно, дериват Unix. И там имя файла должно начинаться с '/'.

+1

Это * так * раздражает, что PgAdmin-III не поддерживает мета-команды psql; делает этот вопрос гораздо сложнее. «О, вы должны использовать другой клиент базы данных, чтобы сделать эту работу». Мех. OTOH, что связано с тем, что «psql» не используется в качестве библиотеки, что является проблемой в нем. –

+0

Метод, который я использую в настоящее время, работает из моего приложения Django, и я получаю тот же результат, используя \ copy из psql. Мои данные по-прежнему не совпадают с правильными столбцами. Проблема в том, что один столбец имеет пустые ячейки. –

+0

Тип данных столбца - геометрия. –

Смежные вопросы