尝试从平面分隔文件到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"
任何线索都会有所帮助!
答案 0 :(得分:0)
如果IQ bcp与ASE相同,那么我认为那些'(null)'字段被解释为字符串,而不是NULL字段。 您需要流式编辑那些(null)。 你是unix所以使用sed或perl -ne。 例如。通过"管道传输文件| perl -pne' s /(null)// g'"加载命令或文件名。 QUOTES OFF似乎有效,但我想知道当你查看加载的数据时,你会在第二个字段中看到双引号,并且'(null)'您希望字段为NULL的位置。