Я пытаюсь импортировать файл CSV в базу данных с помощью команды «COPY»; Тем не менее, я получаю (что кажется распространенным) ошибку, что я должен быть суперпользователем и что я должен использовать вместо этого "\ copy". Однако при использовании \ copy я получаю синтаксическую ошибку:
ERROR: syntax error at or near "\"
LINE 1: \copy
С помощью каретки, указывающей на «\». Вот мой запрос:
\copy tablename(column2, column3, column4, column5) from '/home/uploads/data.csv' WITH DELIMITER ',' CSV HEADER'
Я пробовал и "копировать" и "\ копировать". Первый дает мне ошибку суперпользователя, второй - синтаксическую ошибку. Есть идеи, как это исправить? сделай так, чтоб это работало?
Я выполняю команду через поле ввода sql myPgAdmin.
Единственный другой вопрос, который у меня есть, касается импорта столбцов через имя таблицы (column2, column3 и т. Д. Это правильный синтаксис для этого?
источник
Пожалуйста, обратитесь к руководству postgres для COPY .
В pgAdmin (или в строке sql, которую вы передаете через скрипт или другое соединение с БД), вы просто используете COPY без префикса "\".
поэтому введите что-то вроде:
COPY tablename....
Вы должны убедиться, что у вас есть соответствующие привилегии для запуска команды, поэтому в этом случае вам необходимо иметь возможность войти в базу данных и иметь доступ на запись к «tablename». Postgres также должен иметь возможность доступа к файлу, поэтому путь / home / uploads / должен быть доступен на сервере базы данных, а пользователь postgres должен иметь возможность прочитать файл - проверьте права доступа к файлу и каталогу.
источник
В моей системе 9.1 ошибка, которую я получаю, довольно информативна:
Если вы снова внимательно прочитаете подсказку, в ней есть примечания, которые вы можете скопировать со стандартного ввода. Это то, что \ copy в psql на самом деле делает в серверной части. См. Документы по адресу http://www.postgresql.org/docs/8.3/static/sql-copy.html. получения дополнительной информации .
Затем вы можете поместить тело копии в свой запрос или, по крайней мере, так оно и будет работать в psql.
источник
Вот как я это делаю в pgAdmin3. Но внимательно проверяйте права пользователя, иногда права являются проблемой. (пользователь postgres на имя файла.txt / chmod 777)
источник
Другой способ - создать представление для запроса sql. Затем используйте команду \ copy.
источник