Как импортировать отсутствующие значения в таблице postgresql

В моем файле Csv отсутствуют записи, обозначенные как -

1.2E+09 8.59E+09    In  3   480 5697277130  822277190   OK  1   0   1.23E+09    34295
4.89E+09    9.59E+09    Out 3   480 1677272449  6747272509  OK  1   -100    8.87E+09    21
2.33E+09    4.49E+09    In  4   640 4347277310  4567277370  OK  1   -   3.23E+09    123
 2.33E+09   4.49E+09        4   640 4347277310  4567277370  OK  1   -   3.23E+09    

Я определил схему таблицы следующим образом

create table zip_codes(
  Source numeric,
  manual numeric,
  TTYPE varchar, 
  feature1 numeric, 
  feature2 numeric, 
  LBP1 numeric, 
  RLBP numeric, 
  STATUS varchar, 
  NUMBER_OF_TRASVERSE numeric, 
  rank numeric, 
  image_number numeric, 
  parent_class numeric);

и мой скрипт импорта из файла csv

test_db=# COPY zip_codes FROM 'C:/tmp/dd_1.csv' delimiter ',' csv;

моя ошибка:

ERROR: недопустимый синтаксис ввода для типа numeric: "-"

КОНТЕКСТ: КОПИРОВАНИЕ zip_codes, строка 7, ранг столбца: "-"

Должен ли я изменить числовую схему ранга на что-то еще, чтобы импортировать значения? Любые предложения о том, как я могу импортировать эти значения.

Это большой csv, так есть ли способ импортировать все значения (-)? Какие-либо предложения?

Какие-либо предложения?

Спасибо!

+1
источник поделиться
1 ответ

Вы можете указать строку, используемую для обозначения значения Null. По умолчанию это \N, но вы можете использовать любую строку в соответствии с документом, используя опцию NULL 'null_string'. Это было бы похоже на

test_db=# COPY zip_codes FROM 'C:/tmp/dd_1.csv' delimiter ',' NULL '-' csv;

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

0
источник

Посмотрите другие вопросы по меткам или Задайте вопрос