Файл CSV для импорта PostgreSQL вызывает ошибку синтаксиса

Я пытаюсь импортировать 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'

Я попробовал как «copy», так и «\ copy». Первый дает мне ошибку суперпользователя, которая дает мне эту синтаксическую ошибку. Любая идея о том, как это исправить? заставить его работать?

Я выполняю команду через поле ввода myPgAdmin.

Единственный другой вопрос, который у меня есть, касается импорта столбцов с помощью tablename (column2, column3 и т. д. Является ли это правильным синтаксисом для этого?

6 голосов | спросил antjanus 23 PM000000110000001731 2012, 23:13:17

4 ответа


7

\copy - команда psql (командная строка). Это not регулярная команда SQL.

Вместо этого вам нужно будет использовать COPY (но для этого требуется, чтобы файл присутствовал на сервере базы данных)

ответил a_horse_with_no_name 23 PM000000110000004831 2012, 23:36:48
3

Обратитесь к руководству postgres для COPY .

В pgAdmin (или в строке sql, которую вы передаете через скрипт или другое соединение db), вы просто используете COPY без префикса \ "\".

введите так: COPY tablename....

Вам нужно убедиться, что у вас есть соответствующие права для запуска этой команды, поэтому в этом случае вам нужно будет войти в базу данных и получить доступ на запись к «tablename». Postgres также должен иметь доступ к файлу, поэтому путь /home /uploads /должен быть доступен на сервере базы данных, и пользователь postgres должен иметь возможность читать файл - проверять права доступа к файлу и каталогу.

ответил adam f 24 AM00000020000003131 2012, 02:18:31
1
copy coordina from '/tmp/filename.txt' WITH NULL AS ;

Вот как я это делаю в pgAdmin3. Но внимательно проверяйте права пользователя, иногда права - это проблема. (пользователь postgres на filename.txt /chmod 777)

ответил Martin 24 PM00000020000000131 2012, 14:10:01
0

Другой метод - создать представление для SQL-запроса. Затем используйте команду \ copy.

ответил NinjaLoop 4 J000000Wednesday18 2018, 12:22:10

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132