如何将数据直接从Excel插入Oracle数据库

时间:2015-08-20 11:29:00

标签: sql excel oracle excel-2010

enter image description here

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

我该怎么做?

提前感谢。

6 个答案:

答案 0 :(得分:2)

尝试在Excel中创建插入查询(如果数据不是那么大):
喜欢:
在AA1单元格中写道:'INSERT INTO <TABLE> VALUES('
那么来自不同细胞的各自的值(即'A1,'+'B1,'... +')') 它将在excel中创建插入脚本。只需复制脚本并执行即可
这些是示例查询,plz根据您对INSERT STATEMENT的要求编写自己的查询。

答案 1 :(得分:2)

许多Oracle IDE都提供此功能。

Oracle SQL Developer:

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

我谈论这些功能here

Mapping excel columns to oracle table cols

答案 2 :(得分:2)

使用另存为选项

将您的Excel文件格式转换为.csv格式

将以下内容保存在folder_name文件夹下D驱动器中扩展名为.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

答案 3 :(得分:1)

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

x-x-x-x-x
| | | | |
x-x-x-x-x
| | | | |

注意任何带有&#34;你的&#34;上面的内容必须更改为您想要命名的文件和目录。另请注意&#34; YOUR_DIRECTORY&#34;是您必须创建的实际数据库对象:

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')
  )

答案 4 :(得分:0)

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

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

在Oracle sql developer中转到Tables - &gt;选择导入数据---&gt;选择你的excel或csv文件 - &gt;它将显示列 - &gt;将数据导入表格。

答案 5 :(得分:0)

我有一个查询, 我已经有一个表ABC,我从中删除了几行,但在此之前,我在excel表中删除了我删除的行。 现在我需要将这些记录插回到表中。 由于记录计数更多,我不能为所有人编写Insert语句。 那么有什么方法可以使用excel表将数据导入表中。  谢谢, 阿布舍克巴克