Синтаксическая ошибка в «psql», команда не выполняется

#postgresql #csv #syntax-error #psql #timescaledb

#postgresql #csv #синтаксическая ошибка #psql #timescaledb

Вопрос:

Я использую timescaledb.

Я использую КОПИЮ PostgreSQL для переноса данных из файла csv в базу данных timescale. Имя csv-файла — test.csv.

Я создал базу данных с именем test , имя таблицы — test1. Таблица является гипертаблицей в соответствии с документацией timescaledb.

Структура таблицы и структура файлов csv одинаковы.

При выполнении следующей команды в cmd я не получаю результата, отличного от добавления - символа в консольной команде test-#

 psql -d test -c "COPY test1 FROM C:UsersDEGEJOSDownloadstest.csv CSV"
  

НЕТ ответа в консоли

Если я помещу ; после команды
psql -d test -c "COPY test1 FROM C:UsersDEGEJOSDownloadstest.csv CSV"; Я получаю синтаксическую ошибку в строке 1.

Синтаксическая ошибка

Как я могу устранить эту ошибку и вставить данные из csv-файла в БД.?

Ответ №1:

Вы пытаетесь запустить psql с COPY внутренней psql сессией, поэтому при втором вызове вы получаете ошибку, поскольку psql ключевое слово не существует в SQL. psql является исполняемым файлом.

Чтобы следовать инструкциям из Timescale, вам нужно вызвать команду непосредственно в CMD. Т.е. Вызвать:

 psql -d test -c "COPY test1 FROM C:UsersDEGEJOSDownloadstest.csv CSV"
  

Если вы находитесь в C:UsersDEGEJOS , как на вашем скриншоте, это будет выглядеть так:

 C:UsersDEGEJOSpsql -d test -c "COPY test1 FROM C:UsersDEGEJOSDownloadstest.csv CSV"
  

Комментарии:

1. Я попытался запустить команду непосредственно в CMD. После выхода из postgresql / db, как вы упомянули. CMD выдает сообщение «‘C:UsersDEGEJOSpsql «не распознается как внутренняя или внешняя команда, работоспособная программа или пакетный файл».

2. Вам нужно написать: psql -d test -c "COPY test1 FROM C:UsersDEGEJOSDownloadstest.csv CSV" в CMD, пока вы находитесь внутри C:UsersDEGEJOS . Т.е. Так же, как вы делаете на скриншоте, но с другими аргументами psql .