Я обнаружил одну странную проблему.С помощью утилиты 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?Любая помощь приветствуется!