整数的输入语法无效:gpload文本文件时为“\ N”

问题描述 投票:0回答:1

我发现了一个奇怪的问题。使用greenplum gpload工具,我尝试将数据从单个文本文件导入到greenplum db。文件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')

当我在postgresql中运行这个sql(只做一个小的更改,只选择两个关键字段)时,我遇到了以下错误:

    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

BTW:https://gpdb.docs.pivotal.io/530/utility_guide/admin_utilities/gpload.html#topic1__cfnullas已经证明默认的NULL_AS是\ N,并且gpload找到了\ N,以及为什么它没有将两个字段标记为NULL?任何帮助表示赞赏!

copy greenplum
1个回答
0
投票

您使用的是哪个版本的GPDB? v5中存在已知问题,已在5.6+中修复

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

29197 - gpload / gpfdist

运行gpload操作时,当gpload配置文件指定空字符null_as:'\ N'时,gpfdist实用程序无法将\ N识别为NULL字符。处理配置文件时,gpload实用程序错误地使用另一个反斜杠转义反斜杠()。此问题已得到解决。在处理null_as属性时,gpload实用程序已得到改进,可以正确处理反斜杠。

© www.soinside.com 2019 - 2024. All rights reserved.