2017-09-06 81 views
0

好让我们说,我有以下的.txt文件中包含总额3行:将.txt文件中的值转换并加载到Oracle表| unix |甲骨文

cat my_file_to_load.txt 

993408 
Sep 01 12:46:46 2017 
Sep 01 12:46:51 2017 

的文件是具体数据从一个巨大的日志文件中提取。 第一行是success_rows的数量,第二行是start_time,第三行是end_time。 我在这种情况下,要求是“格式”中的数据因此,为了将其加载到通过下面的脚本定义的Oracle表:

CREATE TABLE ABC.TEST_PP 
(
    SUCCESS_ROWS VARCHAR2(100 BYTE), 
    START_TIME VARCHAR2(100 BYTE), 
    END_TIME  VARCHAR2(100 BYTE) 
) 

我的理想输出将是什么都在表中(我们有多个。 txt文件,所以每一行都会被描述如下图所示):

SUCESS_ROWS START_TIME   END_TIME 
993408   01/09/2017 12:46:46 01/09/2017 12:46:51 

就我个人而言,我会用SQLLDR加载它们。 我知道我必须创建相应的.ctl文件来定义相关信息。

请问如何根据.txt文件中的数据进行相应的转换,以便将它们加载到上述表格中?

任何帮助将是非常感激:)

非常感谢您的宝贵时间,有一个美好的一天。

+0

你能在每行的(如末尾添加字符。一个逗号',')? – etsa

+0

是的这是可行的(允许) –

回答

0

目前我找到了这个解决方案。它需要你在每行的末尾添加一个固定的字符(例如逗号',')。 我将数据文件命名为test3.csv,并命名为ctl文件TEST3.CTL。

命令行:

sqlldr ERRORS=100000 userid=xxx/yyy control=TEST3.CTL data=test3.csv log=test3.log bad=test3.bad skip=0 

CTL

LOAD DATA 
CHARACTERSET WE8ISO8859P1 
APPEND 
CONCATENATE 3 
INTO TABLE TEST_PP 
FIELDS TERMINATED BY ',' 
TRAILING NULLCOLS 
( 
SUCCESS_ROWS , 
START_TIME , 
END_TIME 
) 

样本数据文件:

993408, 
Sep 01 12:46:46 2017, 
Sep 01 12:46:51 2017, 
993412, 
Sep 02 10:22:46 2017, 
Sep 02 11:44:51 2017, 

输出表:

993408 Sep 01 12:46:46 2017 Sep 01 12:46:51 2017 
993412 Sep 02 10:22:46 2017 Sep 02 11:44:51 2017 

日志文件

Table TEST_PP, loaded from every logical record. 
Insert option in effect for this table: APPEND 
TRAILING NULLCOLS option in effect 

    Column Name     Position Len Term Encl Datatype 
------------------------------ ---------- ----- ---- ---- --------------------- 
SUCCESS_ROWS      FIRST  * ,  CHARACTER    
START_TIME       NEXT  * ,  CHARACTER    
END_TIME        NEXT  * ,  CHARACTER    


Table TEST_PP: 
    2 Rows successfully loaded. 
    0 Rows not loaded due to data errors. 
    0 Rows not loaded because all WHEN clauses were failed. 
    0 Rows not loaded because all fields were null. 


Space allocated for bind array:     49536 bytes(64 rows) 
Read buffer bytes: 1048576 

Total logical records skipped:   0 
Total logical records read:    2 
Total logical records rejected:   0 
Total logical records discarded:  0 

Run began on Wed Sep 06 12:17:55 2017 
Run ended on Wed Sep 06 12:17:55 2017 

Elapsed time was:  00:00:00.08 
CPU time was:   00:00:00.01 
+0

好的,etsa,一个有效的!哇谢谢..但是,如果逗号是不允许在每行结束? 此外,我不应该相应地转换日期的格式,以便加载到表格中吗? –