如何使用INSERT INTO SQL语句将数据从Excel文件插入Oracle?

时间:2015-06-06 20:27:47

标签: excel oracle

我使用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 ....如果是这样,我在创建类型时如何添加值?

1 个答案:

答案 0 :(得分:0)

Oracle有一个非常简洁的功能叫做外部表。它们看起来像数据库内部的常规表,因此我们可以对它们执行SELECT语句。诀窍在于表格的数据来自OS文件(因此是“外部”)。我们只是将表定义为与电子表格列相同的结构。它不适用于Excel二进制格式,但它适用于CSV文件(所以{ "_id" : ObjectId("5574118012ae33005f1fca17"), "book" : "Harry Potter", "users" : { "Read_it" : [ { "username" : "John", "id" : 1 } ], "Currently_reading" : [ { "username" : "Peter", "id" : 3 } ], "More_information" : 5 } } )。

外部表的优点是在SQL中操作数据很容易 - 它就是最好的 - 我们不需要将任何东西加载到临时表中。像

这样的东西
var change = (parseInt(chrId.style.left.replace('%',''),10) + 3).toString() + "%"
    chrId.style.left = change

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

无论如何,find out more

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