我需要在Sybase IQ中执行批量加载。问题是,我有一个Sybase开箱即用的日期格式(DD.MM.YYYY)。现在,我可以在load table语句中指定日期格式,但这会使字段为fixed-width,这会导致问题,因为该字段也可能为空,在这种情况下,Sybase会尝试将后续列解析为日期。
数据(组成):
Foo~12.12.2012~Bar
Bar~.~Foo
我尝试了什么:
FooField '~',
datefield '~',
BarField '\x0d\x0a'
无法解析日期
FooField '~',
datefield date('dd.mm.yyyy') NULLS('.'), FILLER('~'),
BarField '\x0d\x0a'
NULL
失败我在这里打花岗岩,有人解决了类似的问题吗?
答案 0 :(得分:2)
您可能应该发布您尝试过的加载表语句。在任何情况下,你都可以使用“DELIMITED BY”
LOAD TABLE foobar (
fooField NULLS(BLANKS),
dateField DATE('DD.MM.YYYY') NULLS(BLANKS, '.'),
barField NULLS(BLANKS)
)
USING CLIENT FILE '/tmp/fifo'
ESCAPES OFF
FORMAT ascii
DELIMITED BY '~'
ROW DELIMITED BY '
'
;
IQ的一个小瑕疵就是你需要在最后一列之后有一个分隔符,并且该分隔符必须紧跟“ROW DELIMITED BY”字符(我的示例LOAD TABLE语句中的换行符)。
因此,您的数据文件需要看起来更像这样:
Foo~12.12.2012~Bar~
Bar~.~Foo~