2010-11-22 195 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