В моей базе данных 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
?
copy "NAV_DATA" (name,call_type,date_created) from 'c:/test.txt' with delimiter '\t' csv
Если вы задаетесь вопросом о том, как значения NULL
представлены в файле CSV, посмотрите справочную страницу, на которую ссылается @Milen в своем комментарии. Или напишите некоторые тестовые данные (включая значения NULL
) в таблицу и экспортируйте их с помощью COPY TO
. Вы получите именно тот формат, который ожидается для COPY FROM
.
В стандартном формате NULL
представлен \N
, в стандартном CSV
ничем между разделителями. И столбцы, не упомянутые в команде COPY
будут заполнены соответствующими значениями по умолчанию.
Например, последовательный столбец (например, id
) получит nextval()
из соответствующей последовательности для каждой строки. Если id
еще не имеет значения по умолчанию, создайте для него последовательность и сделайте nextval('my_sequence_name')
столбцом по умолчанию.