具有NULLable日期的LOAD TABLE语句

时间:2016-07-15 13:16:24

标签: sybase sybase-iq

我希望批量加载到一个名为temp_data的表中,其中一些列是NULLable date。

这是我现在所拥有的:

LOAD TABLE some.temp_data 
(SomeIntegerColumn ',', SomeDateColumn DATE('YYYYMMDD') NULL('NULL'), FILLER(1), SomeStringColumn ',') 
USING CLIENT FILE '{0}' ESCAPES OFF DELIMITED BY ',' ROW DELIMITED BY '#'

我试图加载以下文件

500,NULL,Monthly#
500,NULL,Monthly#
500,NULL,Monthly#

不幸的是,我得到的错误是:

  

错误[07006] [Sybase] [ODBC驱动程序] [Sybase IQ]无法转换NULL,Mon   到日期(列SomeDateColumn)

为什么这不起作用的任何想法?

1 个答案:

答案 0 :(得分:0)

它似乎正在读取第一个分隔符后的8个字符并尝试将它们解释为日期。

尝试切换到FORMAT BCP。以下示例可以对您的示例文件起作用:

XX=[]
for x in X:
    xx=[]
    for i in x:
        ii={}
        ii['the_geom']=i['the_geom']
        ii['values']=[]
        for indx in range(0,len(i[1])):
            pair=[]
            for j in range(1,len(i)):
                pair.append(i[j][indx])
            ii['values'].append(pair)
        xx.append(ii)
    XX.append(xx)

此外,LOAD TABLE some.temp_data ( SomeIntegerColumn , SomeDateColumn NULL('NULL') , SomeStringColumn ) USING CLIENT FILE '{0}' ESCAPES OFF DELIMITED BY ',' ROW DELIMITED BY '#' FORMAT BCP 还具有不需要尾随分隔符的优点。