неверный синтаксис ввода для целого числа: "\ N" при загрузке текстового файла - PullRequest
0 голосов
/ 09 апреля 2019

Я обнаружил одну странную проблему.С помощью утилиты greenplum gpload я попытался импортировать данные из одного текстового файла в базу данных greenplum.Содержимое файла t1.out:

\N|24234243
\N|\N
12342|\N

и версия gpload:

gpload version 5.3.0 build commit:2155c5a8cf8bb7f13f49c6e248fd967a74fed591

, а таблица t1 выглядит следующим образом:

test=# \d t1;
  Table "public.t1"
  Column |  Type  | Modifiers 
  --------+--------+-----------
   id1    | bigint | 
   id2    | bigint |

когда я использую gpload с t1.yaml, я получил следующую ошибку:

2019-04-09 20:12:18|WARN|Please use following query to access the detailed error
2019-04-09 20:12:18|WARN|select * from   p_read_error_log('ext_gpload_reusable_b7ef1344_5ac0_11e9_b6fc_fa163e2d09a1') where cmdtime > to_timestamp('1554811937.76')

и когда я запустил этот sql (внес небольшие изменения, выбрав только два ключевых поля) в postgresql, я получил следующееошибки:

    errmsg                       |   rawdata 

invalid input syntax for integer: "\N", column id1 | \N|24234243
invalid input syntax for integer: "\N", column id1 | \N|\N
invalid input syntax for integer: "\N", column id2 | 12342|\N

Показано, что все 3 строки не были импортированы с 'недопустимым синтаксисом ввода для целого числа: "\ N"'.

но я могу использовать команду COPY для успешного импорта более 3 элементов в t1.

Я попытался найти несколько способов, чтобы найти причину, но не получилось.Часть моего t1.yaml выглядит следующим образом:

    - FORMAT: text 
    - DELIMITER: '|' 
    - ESCAPE: 'OFF' 
    - NULL_AS: '\N' 
    - ERROR_LIMIT: 100

Кстати: https://gpdb.docs.pivotal.io/530/utility_guide/admin_utilities/gpload.html#topic1__cfnullas показало, что по умолчанию NULL_AS - \ N, и gpload нашла \ N, и почему не удалось пометитьдва поля как NULL?Любая помощь приветствуется!

1 Ответ

0 голосов
/ 09 апреля 2019

Какую версию GPDB вы используете?Была известная проблема в v5, которая была исправлена ​​в 5.6 +

https://gpdb.docs.pivotal.io/560/relnotes/GPDB_561_README.html

29197 - gpload / gpfdist

При запуске операции gpload gpfdistутилита не распознала \ N как символ NULL, когда в файле конфигурации gpload указан нулевой символ null_as: '\ N'.При обработке файла конфигурации утилита gpload неправильно экранировала обратную косую черту () с другой обратной косой чертой.Проблема была решена.Утилита gpload была улучшена для правильной обработки обратной косой черты при обработке свойства null_as.

...