#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
.