Sybase加载表:分隔文件中的自定义日期格式

时间:2014-08-12 09:15:18

标签: sybase-iq

我需要在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

失败

我在这里打花岗岩,有人解决了类似的问题吗?

1 个答案:

答案 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~
相关问题