1

我需要在 Sybase IQ 中执行批量加载。问题是,我有一个 Sybase 无法立即理解的日期格式 (DD.MM.YYYY)。现在,我可以在加载表语句中指定日期格式,但这会使字段固定宽度,这会导致问题,因为该字段也可以为空,在这种情况下,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 上失败

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

4

1 回答 1

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~
于 2014-12-20T00:21:26.533 回答