Проблемы с командой COPY в PostgreSQL - PullRequest
1 голос
/ 14 ноября 2011

В моей базе данных 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?

Ответы [ 2 ]

2 голосов
/ 14 ноября 2011
copy "NAV_DATA" (name,call_type,date_created) from 'c:/test.txt' with delimiter '\t' csv
1 голос
/ 14 ноября 2011

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

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

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

...