2017-09-07 1 views
-1

Ich muss eine CSV-Datei in Tabelle mit SQL Loader laden, aber die Länge einer Spalte überschreitet die maximale Länge von varchar2 Datentyp.sql loader: Laden Sie die Zeichenfolge größer als 4000 Zeichen mit sql Loader

erstellen table-Anweisung:

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

CTL-Datei:

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 Beispieldatensatz:

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 

ich Paste einfach nicht den vollständigen Text hier, wie es langwierig sein wird, aber Sie können die Länge der mittleren Spalte im CSV- oder KEY_COL-Feldwert zum Testen an mehr als 4000 anhängen.

sqlldr:

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

Bitte vorschlagen, wenn es eine Möglichkeit ist, wo wir eine Reihe von Länge von mehr als 4000 mit SQL LOADER laden können oder gibt es eine Abhilfe für diese Art von Problem.

Ich bin auf:

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

Antwort

0

ich es tat! :)

Ändern der Spaltendatentyp CLOB wie nachstehend:

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

Dann werden die CTL-I-Daten in CLOB- Spalte Last verwendet, ist wie folgt:

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')" 
)