Проблемы с командой COPY в PostgreSQL

1

В моей базе данных Postgresql я создал таблицу NAV_DATA с пятью столбцами:

 id (PKEY)
,name (VARCHAR)
,call_type (VARCHAR)
,date_created (date)

Для этих столбцов У меня есть файл CSV, который разделитель TAB \t и QuoteChar ".
Он также имеет несколько пустых полей в среднем столбце.

Как разрешить принимать нулевые значения в команде копирования?

Я хочу вставить столбцы (name, call_type, date_created). У меня нет id поля в моем CSV.

Как скопировать определенные столбцы в БД?

Проблема также связана с разделителем TAB \t?

  • 1
    Пожалуйста, посмотрите на соответствующую страницу руководства и измените свой вопрос, если увидите что-то неясное.
  • 0
    Вы упоминаете «5 столбцов», но показываете только 4?
Теги:
csv
postgresql-copy

2 ответа

2
copy "NAV_DATA" (name,call_type,date_created) from 'c:/test.txt' with delimiter '\t' csv
  • 0
    Я думаю, что имя таблицы не должно быть в кавычках. Сомнение заключается в том, что идентификатор первичного ключа будет увеличиваться автоматически для каждой записи?
  • 0
    Postgres чувствителен к регистру имен таблиц и столбцов и, если он не заключен в кавычки, он будет преобразован в нижний регистр. это будет означать, что NAV_DATA не будет соответствовать таблице с именем NAV_DATA. Вы должны будете написать «NAV_DATA» в вашем запросе.
Показать ещё 1 комментарий
1

Если вы задаетесь вопросом о том, как значения NULL представлены в файле CSV, посмотрите справочную страницу, на которую ссылается @Milen в своем комментарии. Или напишите некоторые тестовые данные (включая значения NULL) в таблицу и экспортируйте их с помощью COPY TO. Вы получите именно тот формат, который ожидается для COPY FROM.

В стандартном формате NULL представлен \N, в стандартном CSV ничем между разделителями. И столбцы, не упомянутые в команде COPY будут заполнены соответствующими значениями по умолчанию.

Например, последовательный столбец (например, id) получит nextval() из соответствующей последовательности для каждой строки. Если id еще не имеет значения по умолчанию, создайте для него последовательность и сделайте nextval('my_sequence_name') столбцом по умолчанию.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню