2010-11-22 192 views
1

我正在使用Oracle ApEx,并且想知道将单列csv文件上载到Oracle表中以便在ApEx中使用的最佳方法是什么?将CSV文件加载到Oracle中表

谢谢。

+0

的可能重复甲骨文:用sqlplus导入CSV文件(http://stackoverflow.com/questions/6198863/oracle-import-csv-file-using-sqlplus) – Ben 2014-06-16 10:56:54

回答

0

要使用SQLLOADER加载CSV文件将需要执行以下操作:

(a)中的CSV文件 (b)中SQLLOADER控制文件(也称为CTL文件) (c)中SQLLOADER命令(a)中使用(b)中的CTL文件加载CSV文件。

CSV文件,你已经有了。在这个例子中,文件名是temp.csv包含两列

A,100 
B,200 
C,300 
D,400 

现在,你需要创建一个控制描述文件和表将其加载到,以及如何加载它。在本例中,名为temp.ctl的控制文件名和要加载到的表为TEMP_TABLE,其中包含两列,COLUMN_1为VARCHAR2(2),COLUMN_2为NUMBER。该temp.ctl看起来像下面

LOAD DATA 
APPEND 
INTO TEMP_TABLE 
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' 
TRAILING NULLCOLS 
(
    COLUMN_1 CHAR, 
    COLUMN_2 Integer EXTERNAL 
) 
+0

穆罕默德感谢您的帮助,但不想使用SQL * Loader - 请参阅上面的我的评论。 – tonyf 2010-11-22 13:39:38

+0

@ Mohamed我肯定需要你在SQL * Loader中的帮助来将csv文件加载到oracle数据库中 – lee 2012-08-26 12:48:53

+0

FYR:http://stackoverflow.com/questions/6198863/oracle-import-csv-file-using-sqlplus – 2012-08-26 15:11:02

0

大文件:

  • SQLLOADER
  • 外部表

小档案:

  • 自己的分析
+0

谢谢,但不是最终用户可以使用SQL * Loader来查看,因此希望允许他们从Oracle ApEx中选择文件,从PC上载,然后解析并加载到表中。将单列csv解析到oracle表中的最佳方法是什么?谢谢。 – tonyf 2010-11-22 09:59:07

0

你可以用awk来完成。

下面是如何从.csv数据填充表的示例。

SQL> create table MY_TABLE(a varchar2(100), b varchar2(100)); 

[[email protected] ~]$ tail Some_Input_CSV_file 
Some Data A 1,Some Data B 1 
Some Data A 2,Some Data B 2 
Some Data A 3,Some Data B 3 
Some Data A 4,Some Data B 4 
Some Data A 5,Some Data B 5 
Some Data A 6,Some Data B 6 
Some Data A 7,Some Data B 7 
Some Data A 8,Some Data B 8 
Some Data A 9,Some Data B 9 
Some Data A 10,Some Data B 10 
[[email protected] ~]$ 

[[email protected] ~]$ cat Some_Input_CSV_file | awk -F, ‘ { printf(“insert into MY_TABLE values(trim(\x27%s\x27), trim(\x27%s\x27));\n”, $1, $2); } ‘ > RunMe.sql 

[[email protected] ~]$ tail RunMe.sql 
insert into MY_TABLE values(trim(‘Some Data A 1′), trim(‘Some Data B 1′)); 
insert into MY_TABLE values(trim(‘Some Data A 2′), trim(‘Some Data B 2′)); 
insert into MY_TABLE values(trim(‘Some Data A 3′), trim(‘Some Data B 3′)); 
insert into MY_TABLE values(trim(‘Some Data A 4′), trim(‘Some Data B 4′)); 
insert into MY_TABLE values(trim(‘Some Data A 5′), trim(‘Some Data B 5′)); 
insert into MY_TABLE values(trim(‘Some Data A 6′), trim(‘Some Data B 6′)); 
insert into MY_TABLE values(trim(‘Some Data A 7′), trim(‘Some Data B 7′)); 
insert into MY_TABLE values(trim(‘Some Data A 8′), trim(‘Some Data B 8′)); 
insert into MY_TABLE values(trim(‘Some Data A 9′), trim(‘Some Data B 9′)); 
insert into MY_TABLE values(trim(‘Some Data A 10′), trim(‘Some Data B 10′)); 
[[email protected] ~]$ 

[[email protected] ~]$ sqlplus myuser/[email protected] 

SQL> @RunMe.sql 

… 

1 row created. 

1 row created. 

1 row created. 

1 row created. 

1 row created. 

SQL> commit; 

Commit complete. 

SQL> exit