我希望批量加载到一个名为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)
为什么这不起作用的任何想法?
答案 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
还具有不需要尾随分隔符的优点。