2016-12-30 41 views
2

我想知道如何處理我的輸入文件有26列和文件將被加載到只有6列,其中一些列值將需要使用CONSTANT關鍵字進行硬編碼,並使用FILLER跳過列。SQL Loader輸入文件列表比表

出於某種原因,我無法這樣做。以下是控制文件:

LOAD DATA 
TRUNCATE 
INTO TABLE R2X1.RDA_PROD_CNTG 
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '\"' 
(
ITEM, 
GLOBAL_DOMAIN_TYPE CONSTANT S 
GLOBAL_ID CONSTANT 10 
GLOBAL_DOMAIN_DESC CONSTANT 'Sales Forecast', 
5 FILLER, 
6 FILLER, 
7 FILLER, 
8 FILLER, 
9 FILLER, 
10 FILLER, 
11 FILLER, 
12 FILLER, 
13 FILLER, 
14 FILLER, 
15 FILLER, 
16 FILLER, 
17 FILLER, 
18 FILLER, 
19 FILLER, 
20 FILLER, 
DOMAIN_ID, 
DOMAIN_LABEL, 
23 FILLER, 
24 FILLER, 
25 FILLER, 
26 FILLER 
) 

,將文件將被加載的表具有以下定義:

ITEM    VARCHAR2(25 BYTE), 
GLOBAL_DOMAIN_TYPE VARCHAR2(1 BYTE), 
GLOBAL_ID   NUMBER(3), 
GLOBAL_DOMAIN_DESC VARCHAR2(50 BYTE), 
DOMAIN_ID   NUMBER(3), 
DOMAIN_LABEL  VARCHAR2(20 BYTE) 

任何幫助將不勝感激!

+0

你是否收到錯誤?如果是這樣,請包含錯誤消息。 –

回答

1

由於某些列是常量,並且文件中有26列,因此缺少3個填充符。包括他們,這應該工作。

LOAD DATA 
--INFILE option missing. I'm not sure if you excluded it from the question 
TRUNCATE 
INTO TABLE R2X1.RDA_PROD_CNTG 
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '\"' 
(
ITEM, 
GLOBAL_DOMAIN_TYPE CONSTANT 'S', --missing quotes and comma 
GLOBAL_ID CONSTANT 10, --missing comma 
GLOBAL_DOMAIN_DESC CONSTANT 'Sales Forecast', 
filler2 FILLER, 
filler3 FILLER, 
filler4 FILLER, 
filler5 FILLER, 
filler6 FILLER, 
filler7 FILLER, 
filler8 FILLER, 
filler9 FILLER, 
filler10 FILLER, 
filler11 FILLER, 
filler12 FILLER, 
filler13 FILLER, 
filler14 FILLER, 
filler15 FILLER, 
filler16 FILLER, 
filler17 FILLER, 
filler18 FILLER, 
filler19 FILLER, 
filler20 FILLER, 
DOMAIN_ID, 
DOMAIN_LABEL, 
filler23 FILLER, 
filler24 FILLER, 
filler25 FILLER, 
filler26 FILLER 
) 
+0

謝謝,我接受了你的建議,但它仍然不適合我。我收到以下錯誤消息:SQL * Loader-404:列出現在R2X1.RDA_PROD_CNTG的INTO TABLE塊中多次。 – Adil

+0

如果這是您正在使用的腳本,我沒有看到任何指定的列多次。 –

+0

確定發現問題了,我將列名從2更改爲了filler2等等,根據您的建議。我想它並不接受一個數字作爲列名。謝謝! – Adil