【问题标题】:How can I insert data from Excel file to Oracle using INSERT INTO SQL statement?如何使用 INSERT INTO SQL 语句将数据从 Excel 文件插入 Oracle?
【发布时间】:2015-06-06 20:27:47
【问题描述】:

我已经使用 Oracle 对象创建了类型并创建了一个表

CREATE OR REPLACE TYPE OttawaAddress_Ty AS OBJECT
(StrtNum NUMBER(9),
Street VARCHAR2(20),
City VARCHAR2(15),
Province CHAR(2),
PostalCode CHAR(7));
/


CREATE OR REPLACE TYPE OttawaOfficesInfo_Ty AS OBJECT
(Name VARCHAR(35),
OfficeID VARCHAR2(2),
Phone VARCHAR2(15),
Fax CHAR(15),
Email CHAR(30));
/


CREATE TABLE OttawaOffices
(OfficeAddress OttawaAddress_Ty,
OfficeInfo OttawaOfficesInfo_Ty,
Longitude_DMS NUMBER (10,7),
Latitude_DMS NUMBER (10,7),
SDO_GEOMETRY MDSYS.SDO_GEOMETRY);

我有一个保存数据的 Excel 文件,我需要使用 INSERT INTO SQL 语句将数据导入到这个 Oracle 表中。我怎样才能做到这一点?如您所见,我有一个名为SDO_GEOMETRY 的列,它将保存记录的十进制度数。这些十进制度数保存在我的 Excel 文件的两个单独的列中。

我不确定我是否可以从 Excel 中插入有问题的值,或者我是否需要遍历每条记录并创建 INSERT INTO ... VALUES.... 如果是这样,当我创建类型时如何添加值?

【问题讨论】:

  • 您应该在“Excel VBA pass-through Query to Oracle”之类的内容上进行谷歌搜索,然后根据您的特定要求调整结果。希望这可能会有所帮助。最好的问候,

标签: excel oracle


【解决方案1】:

Oracle 有一个非常简洁的特性,称为外部表。这些看起来像数据库内部的常规表,因此我们可以对它们执行 SELECT 语句。诀窍是表的数据来自操作系统文件(因此是“外部”)。我们只是将表格定义为与电子表格的列相同的结构。它不适用于 Excel 二进制格式,但适用于 CSV 文件(所以Save as ...)。

外部表的优点是在 SQL 中操作数据很容易——这是最好的——而且我们不需要将任何内容加载到临时表中。类似的东西

insert into OttawaOffices
select  ottawaaddress_ty(ext.strtnum,ext.street,ext.city,ext.province,ext.postalcode)
     , ottawaofficesinfo_ty (ext.name,ext.officeid,ext.phone,ext.fax,ext.email)
     , ext.longitude
     , ext.latitude
     , SDO_GEOMETRY MDSYS.SDO_GEOMETRY(ext.col1, ext.col2)
from your_external_table ext
/

外部表的限制是需要将源文件获取到数据库服务器并创建数据库目录对象。有些地方对此很有趣。

不管怎样,find out more。


我不会对声明表列作为用户定义类型进行判断。这通常被认为是不好的做法,但也许它适用于您的用例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-05
    • 1970-01-01
    • 2012-10-18
    • 1970-01-01
    • 2021-01-24
    • 1970-01-01
    • 2017-12-19
    相关资源
    最近更新 更多