将CSV文件加载到Oracle中表
要使用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
)
大文件:
- SQLLOADER
- 外部表
小档案:
- 自己的分析
谢谢,但不是最终用户可以使用SQL * Loader来查看,因此希望允许他们从Oracle ApEx中选择文件,从PC上载,然后解析并加载到表中。将单列csv解析到oracle表中的最佳方法是什么?谢谢。 – tonyf 2010-11-22 09:59:07
我和你有同样的问题。 你可能已经找到了解决方案,但我按照这个链接中的方法 http://forums.oracle.com/forums/thread.jspa?threadID=545565 它适用于我。他们使用外部表格。列的最大数量是50.
其他选项是http://avdeo.com/2008/05/21/uploading-excel-sheet-using-oracle-application-express-apex/ 但是,我发现如果您的CSV包含一些特殊字符,它不会正常运行。
希望这有助于某种方式。
你可以用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
的可能重复甲骨文:用sqlplus导入CSV文件(http://*.com/questions/6198863/oracle-import-csv-file-using-sqlplus) – Ben 2014-06-16 10:56:54