2016-07-15 48 views
0

我正在尋找一個批處理加載到名爲temp_data的表中,其中一些列是無效日期。LOAD TABLE語句無效日期

這裏是我到現在爲止:

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

看來它正在讀取第一個分隔符後面的8個字符,並試圖將它們解釋爲日期。

嘗試切換到FORMAT BCP。下面的例子可以在您的示例文件的工作:

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

此外,FORMAT BCP還具有不需要尾部分隔符的優勢。

+0

我也能夠通過在原始查詢中將'FILLER(1)'更改爲'FILLER(',')'來實現它。 – stevepastelan