Oracle Loader for .xlsx文件
我打算将.xlsx文件加载到Oracle数据库表中。 我得到我的代码错误。 我通常使用.csv文件的这个代码,但需要使用它的.xlsx我已经编辑了我的字段名称,表名等等这可能吗?
Drop TABLE Temp_Info; CREATE TABLE Temp_Info ( Unique_Id varchar2(255) , Name varchar2(255), Alt_Name varchar2(255) ) ORGANIZATION EXTERNAL ( TYPE ORACLE_LOADER DEFAULT DIRECTORY SEPA_FILES ACCESS PARAMETERS ( records delimited by newline skip 1 fields terminated by ',' missing field values are null ( Unique ID -(filled automatically),Name,Alt Name ) ) LOCATION ('Data_File.xlsx') ) REJECT LIMIT UNLIMITED;
Select * From Temp_Info a;
Error Message: 9:16:55 ORA-29913: error in executing ODCIEXTTABLEOPEN callout 9:16:55 ORA-29400: data cartridge error 9:16:55 KUP-00554: error encountered while parsing access parameters 9:16:55 KUP-01005: syntax error: found "identifier": expecting one of: "comma, char, date, defaultif, decimal, double, float, integer, (, nullif, oracle_date, oracle_number, position, raw, recnum, ), unsigned, varrawc, varchar, varraw, varcharc, zoned" 9:16:55 KUP-01008: the bad identifier was: ID 9:16:55 KUP-01007: at line 6 column 30 9:16:55 ORA-06512: at "SYS.ORACLE_LOADER", line 14 9:16:55 ORA-06
1)选项[Pure PL / SQL]
Xlsx文件是压缩的一组xml文件。 你可以改变扩展xlsx压缩,解压缩,并找出内部。 这里是描述如何在oracle环境下处理xlsx文件。 这个解决scheme的工作,但实施是非常痛苦的。
2)选项(PL / SQL + apache POI)在java中创build实现。 并在数据库中使用它。
3)将xlxs转换为csv。
你可能想看看ExcelTable的 SQL接口(免责声明:我是作者)。
它提供对.xlsx(或.xlsm)文件的访问作为外部表。
这是一个基于你的ext表定义的例子:
SELECT t.* FROM TABLE( ExcelTable.getRows( ExcelTable.getFile('SEPA_FILES','Data_File.xlsx') , 'Sheet_name_goes_here' , ' "UNIQUE_ID" for ordinality , "NAME" varchar2(255) , "ALT_NAME" varchar2(255) ' , 'A2' ) ) t ;
(我认为UNIQUE_ID是某种自动生成的序列)