读取 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: 超出了恢复文件数的限制

JavaScript 中 FileReader#readEntries 可以读取的目录的最大文件数

从 Spark 估计要写入 HDFS 的部分文件数

可以在 C# 中打开的最大文件数是不是有限制?

如何计算每个目录中的文件数?

查找目录中的文件数