2017-09-07 41 views
-1

sqlローダーを使用してCSVファイルをテーブルにロードする必要がありますが、カラムの1/10がvarchar2データ型の最大長を超えています。sql loader:SQLローダーを使用して4000文字を超える文字列をロード

table文を作成します。

CREATE TABLE TEST_PIPE_SEP (FILE_NM VARCHAR2(3000), KEY_COL VARCHAr2(4000), DESCR VARCHAR2(4000), RUN_DATE DATE); 

CTLファイル:

load data 
into table test_pipe_sep 
append 
fields terminated by ',' 
TRAILING NULLCOLS 
(
FILE_NM char(4000) "trim(:FILE_NM)", 
KEY_COL char(4000) "trim(:KEY_COL)", 
DESCR "trim(:DESCR)", 
RUN_DATE "to_date(sysdate, 'dd-mon-yyyy hh24:mi:ss')" 
) 

CSVのサンプルレコード:

sample_file_name.csv,"B"|"STRESS_TESTING_SCENARIO_ID"|"TRANCHE_COLLATERAL_TYPE"|"TRANCHE_GUARANTEE_TYPE"|"BS_TYPE"|"CONTRACT_REFERENCE"|"CONTRACT_TYPE"|,Not Present in file2 

それが長くなるように、私はちょうどここに全文を貼り付けていないが、 CSVまたはKEY_COLフィールド値の中央の列の長さをテストのために4000以上に追加することができます。

SQLLDR:

sqlldr userid=$SQL_CREDENTIALS control=new_test_3.ctl data=data/$filename log=logs/$filename.log bad=logs/$filename.bad skip=1 

我々はSQL Loaderを使用して、より4000以上の長さの文字列を読み込むことができますかこの種の問題のための任意の回避策はありますどのような方法があるかどうかを提案してください。

私は日午前:私はそれをやった

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production 

答えて

0

! :)

変更列データ・タイプ次のようにCLOBに:

CREATE TABLE TEST_PIPE_SEP (FILE_NM VARCHAR2(3000), KEY_COL CLOB, DESCR VARCHAR2(4000), RUN_DATE DATE); 

そしてIは、CLOB列にデータをロードするために使用されるCTLは以下の通りである:

load data 
into table test_pipe_sep 
append 
fields terminated by ',' 
TRAILING NULLCOLS 
(
FILE_NM char(4000) "trim(:FILE_NM)", 
KEY_COL CHAR(30000) optionally ENCLOSED BY '<' AND '>', 
DESCR "trim(:DESCR)", 
RUN_DATE "to_date(sysdate, 'dd-mon-yyyy hh24:mi:ss')" 
) 
関連する問題