读取 Oracle 数据库中的 Excel 文件
Posted
技术标签:
【中文标题】读取 Oracle 数据库中的 Excel 文件【英文标题】:Read Excel file in Oracle database 【发布时间】:2019-11-08 06:39:55 【问题描述】:我想知道一种可以帮助我阅读 excel 文件的方法或程序或查询。我只想将 excel 文件放在我的数据库服务器上的某个位置,并使用查询在查询输出中显示该 excel 文件的所有记录。文件可以是任意长度、任意数量的行和列。
我使用过 as_read_xlsx,但它以列的形式提供数据,还提供单独的字符串、数字和日期。我希望所有数据都显示在 excel 中。
【问题讨论】:
你能做到 csv 吗?因为在 oracle 中读取 csv 非常容易 您的案例需要一个External
表。在此处阅读如何创建外部表。 techgoeasy.com/oracle-external-tables
这能回答你的问题吗? How to insert data directly from Excel to Oracle Database
【参考方案1】:
我只想将 excel 文件放在我的数据库服务器上的某个位置并使用 在查询输出中显示该 excel 文件的所有记录的查询。 文件可以是任意长度、任意数量的行和列。
正如我在 cmets 中提到的,您需要创建一个 External
表来执行此操作。
见下文:
我的CSV
(Tst.csv) 文件内容:
创建目录CSV_FILES
并以SYS
登录并授予读写权限。
GRANT READ,WRITE ON DIRECTORY CSV_FILES TO scott;
创建External
表如下:
CREATE TABLE TST_TABLE
(
ACCT_NO VARCHAR2(7),
LOAN_AMOUNT NUMBER,
PRODUCT_TYPE VARCHAR2(3)
)
ORGANIZATION EXTERNAL
( TYPE ORACLE_LOADER
DEFAULT DIRECTORY CSV_FILES
ACCESS PARAMETERS
( RECORDS DELIMITED BY NEWLINE
skip 1
LOGFILE CSV_FILES:'tstlog.log'
BADFILE CSV_FILES:'tstbad.bad'
FIELDS TERMINATED BY ","
(
ACCT_NO ,
LOAN_AMOUNT ,
PRODUCT_TYPE
)
)
LOCATION ('Tst.csv'))
reject limit unlimited;
查询表中所有记录为:
SQL> select * from TST_TABLE;
ACCT_NO LOAN_AMOUNT PRO
------- ----------- ---
AFSGSGT 34454 XXX
BSDFFGS 45645 YYY
SFSDFDS 56453 ZZZ
查询以使用过滤条件选择选择性记录:
SQL> select * from TST_TABLE where product_type = 'XXX';
ACCT_NO LOAN_AMOUNT PRO
------- ----------- ---
AFSGSGT 34454 XXX
【讨论】:
以上是关于读取 Oracle 数据库中的 Excel 文件的主要内容,如果未能解决你的问题,请参考以下文章
Oracle - ORA-19809: 超出了恢复文件数的限制