【问题标题】:How to insert data directly from Excel to Oracle Database如何将数据直接从 Excel 插入 Oracle 数据库
【发布时间】:2015-08-20 11:29:00
【问题描述】:

我想知道如何将数据从 Excel 插入 Oracle 意味着假设我有一个充满数据的工作表,我想将它们全部插入 Oracle 数据库。

我该怎么做?

提前致谢。

【问题讨论】:

  • 你用的是什么工具??
  • Excel 2010 和 SQL*Plus
  • 然后使用sql loader将数据从excel表加载到表orafaq.com/wiki/SQL*Loader_FAQ
  • 我如何使用 sql loader?
  • 发布 10 行您的 excel 数据,我将发布 sql* loader(.ctl) 文件。

标签: sql excel oracle excel-2010


【解决方案1】:

许多 Oracle IDE 都提供此功能。

Oracle SQL 开发人员:

  • 从 CSV 导入新表或现有表
  • 从 XLS/XLSX 文件导入新表或现有表
  • 可以设置外部表或 SQL*Loader 会话以从分隔文件导入新表或现有表
  • 提供用于自动化目的的命令行界面

我在谈论这些功能here

【讨论】:

    【解决方案2】:

    您可以使用 sql loader,但如果您想要更强大的解决方案(特别是如果数据将直接在电子表格中修改),请查看 Oracle 中的外部表。您可以直接从电子表格构建数据库表,代码如下所示:

    CREATE TABLE YOUR_SCHEMA.YOUR_TABLE
    (
      ACCT_NO                   VARCHAR2(15 BYTE),
      PRODUCT_TYPE              VARCHAR2(50 BYTE),
      ORGINATION_DATE           VARCHAR2(20 BYTE),
      MATURITY_DATE             VARCHAR2(20 BYTE),
      FIXED_PERIOD_START_DATE   VARCHAR2(30 BYTE),
      FIXED_PERIOD_END_DATE     VARCHAR2(30 BYTE),
      ORIGINAL_LOAN_AMOUNT      NUMBER,
      CURRENT_BALANCE           NUMBER
    )
    ORGANIZATION EXTERNAL
      (  TYPE ORACLE_LOADER
         DEFAULT DIRECTORY YOUR_DIRECTORY
         ACCESS PARAMETERS 
           ( RECORDS DELIMITED  BY NEWLINE
             LOGFILE YOUR_DIRECTORY:'your_log.log'
             BADFILE YOUR_DIRECTORY:'your_bad.bad'
             FIELDS TERMINATED BY ','
             MISSING FIELD VALUES ARE NULL )
         LOCATION (YOUR_DIRECTORY:'your_file.csv')
      )
    

    请注意,上面带有“您的”一词的任何内容都必须更改为您想要命名文件和目录的任何内容。另请注意,“YOUR_DIRECTORY”是您必须创建的实际数据库对象:

    CREATE OR REPLACE DIRECTORY YOUR_DIRECTORY AS 'C:\workspaces\test\XL2ExternalTables'
    

    【讨论】:

      【解决方案3】:

      尝试在 Excel 中创建插入查询(如果数据不是那么大):
      喜欢:
      在 AA1 单元格中写入:'INSERT INTO <TABLE> VALUES('
      然后来自不同单元格的相应值(即'A1,'+'B1,'...+')')
      它将在 excel 中创建插入脚本。只需复制脚本并执行即可。

      这些是示例查询,请根据您对 INSERT STATEMENT 的要求编写您自己的查询。

      【讨论】:

        【解决方案4】:

        使用另存为选项将您的 excel 文件格式转换为 .csv 格式

        将以下内容保存在 D 驱动器中 folder_name 文件夹下的扩展名为 .ctl 的文件中。在运行此 .ctl 之前,请确保该表应存在于您的架构中,并且其列名与您发布的图像中不同。并且列名应与 .ctl 文件的名称匹配(sc_id, 萨尔等)。列的数据类型应与 .csv 文件中的数据匹配。并且还要确保你的table 应该是empty 否则你应该在你的.ctl 文件中使用truncateappend 选项。

         LOAD DATA
            INFILE 'D:\folder_name\csvfile_name.CSV'
            BADFILE 'D:\folder_name\csvfile_name.BAD'
            DISCARDFILE 'D:\folder_name\csvfile_name.log'
            logfile 'D:\folder_name\csvfile_name.DSC'
            iNTO TABLE schema_name.table_name
            FIELDS TERMINATED BY ','
            TRAILING NULLCOLS
        
            (
            sc_id,
            sal,
            sc_cd1,
            coll,
            sc_cd2,
            bill_mas,
           sc_cd3,
           wk_sal,
           check_bill_month,
           check_sale_wk
            ) 
        

        使用以下命令在 sql plus 中运行您的 .ctl 文件

        sqlldr schema_name/password@databasename control=your control file path.
        

        如果在将数据加载到表中时发生任何错误,这些将记录到 .log 文件中。了解更多关于sqlloader的信息请参考http://docs.oracle.com/cd/B10501_01/server.920/a96652/ch05.htm

        【讨论】:

          【解决方案5】:

          请参考答案。 https://community.oracle.com/thread/2166713?start=0

          我只是从上面的链接复制对我有用的方法

          在 Oracle sql developer 中转到表 --> 选择导入数据 ---> 选择您的 excel 或 csv 文件 --> 它将显示列 --> 将数据导入表中。

          【讨论】:

          • 很有帮助。谢谢大佬!
          • 很高兴它有帮助:)
          猜你喜欢
          • 2015-09-19
          • 2017-03-23
          • 1970-01-01
          • 1970-01-01
          • 2014-08-08
          • 1970-01-01
          • 1970-01-01
          • 2020-04-22
          • 1970-01-01
          相关资源
          最近更新 更多