如何将数据直接从 Excel 插入 Oracle 数据库
Posted
技术标签:
【中文标题】如何将数据直接从 Excel 插入 Oracle 数据库【英文标题】:How to insert data directly from Excel to Oracle Database 【发布时间】: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) 文件。 【参考方案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 文件中使用truncate
或append
选项。
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 文件 --> 它将显示列 --> 将数据导入表中。
【讨论】:
很有帮助。谢谢大佬! 很高兴它有帮助:)以上是关于如何将数据直接从 Excel 插入 Oracle 数据库的主要内容,如果未能解决你的问题,请参考以下文章
在asp.net中如何对oracle数据库执行批量插入数据?
如何将 Excel 工作表中的行插入 SQL Server 2005 或 oracle
vb.net 如何读出excel,并把数据插入oracle数据库中。