加载表问题 - 来自平面文件的BCP - Sybase IQ

时间:2016-01-15 22:33:38

标签: sybase quotes bcp sybase-iq

尝试从平面分隔文件到Sybase IQ表执行bcp时,我收到以下错误。

  

无法执行声明     在封闭字段的结束引号字符后找到非空格文本。

我无法在文件中观察到任何非空格文本,但此错误阻止我进行批量复制。 | 是列分隔符,作为文本限定符, \ n 是行分隔符。
下面是相同的示例模板,我正在使用。

  

LOAD TABLE TABLE_NAME(a NULL('(null)'),b NULL('(null)'),c NULL('(null)')) USING CLIENT FILE '/home/...../a.txt' //unix QUOTES ON FORMAT bcp STRIP RTRIM DELIMITED BY '|' ROW DELIMITED BY '\n'

当我使用 QUOTES OFF 执行相同的查询时,加载成功。但是,同样的查询因 QUOTES ON 而失败。我也想删除引号。

  

样本数据

     
12345|"abcde"|(null)
12346|"abcdf"|"zxf"
12347|(null)|(null)
12348|"abcdg"|"zyf"
  

任何线索都会有所帮助!

1 个答案:

答案 0 :(得分:0)

如果IQ bcp与ASE相同,那么我认为那些'(null)'字段被解释为字符串,而不是NULL字段。 您需要流式编辑那些(null)。 你是unix所以使用sed或perl -ne。 例如。通过"管道传输文件| perl -pne' s /(null)// g'"加载命令或文件名。 QUOTES OFF似乎有效,但我想知道当你查看加载的数据时,你会在第二个字段中看到双引号,并且'(null)'您希望字段为NULL的位置。