如何将数据从Excel复制到Oracle?

如何将数据从Excel复制到Oracle?

有许多不同的方法,取决于数据量,过程的重复性以及我愿意投资的节目数量。 首先,创buildOracle表,使用SQL CREATE TABLE语句来定义表的列长度和types。 下面是一个sqlplus“CREATE TABLE”语句的例子:CREATE TABLE SPECIES_RATINGS(SPECIES VARCHAR2(10),COUNT NUMBER,RATING VARCHARC2(1)); 然后使用下面的任何一种方法或者一个全新的方法加载数据:-------------------------------- ------------第一种加载方法:我使用SQL * Loader方法。 您需要以CSV或PRN等文本格式保存电子表格的副本。 用于CSV文件的SQL * Loader控制文件:将数据infile'c​​:\ data \ mydata.csv'加载到以'“'(empno,empname,sal,deptno)有向导来指导您进行临时导入过程(企业pipe理器 - >维护 - >数据移动 - >移动行数据 - >从用户文件加载数据)。Toad for Oracle还有一个SQL * Loader向导(DBA  - >数据导入/导出 - > SQL * Loader向导)如果您打算在您的控制文件中使用位置数据(固定长度),则可以将您的Excel数据保存为PRN格式SQL * Loader PRN文件的控制文件(02:05)char(4),deptname位置(08:27)char(20))位置(02:05):将数据载入“c:\ data \ mydata.prn”给第二到第五个字符一旦我经历了EM或Toad向导,我保存了控制文件,根据需要在文本编辑器中调整它,然后在SQL * Plus脚本中重新使用它。这一切 允许您跳过某些数据并在您的控制.ctl文件中调用过滤函数(即,DECODE()或TO_DATE()或用户定义的函数中的本机函数)。 您可以通过重复INFILE子句来提供多个input文件,只要它们使用相同的logging格式即可。 这里是一个例子:LOAD DATA INFILE file1.prn INFILE file2.prn INFILE file3.prn APPEND INTO TABLE emp(empno POSITION(1:4)INTEGER EXTERNAL,ename POSITION(6:15)CHAR,deptno POSITION(17:18) CHAR,mgr POSITION(20:23)INTEGER EXTERNAL)还可以在SQL * Loader控制文件中指定多个“INTO TABLE”子句以加载到多个表中。  LOAD DATA INFILE'mydata.dat'replace为表emp当empno!=''(empno POSITION(1:4)INTEGER EXTERNAL,ename POSITION(6:15)CHAR,deptno POSITION(17:18)CHAR,mgr POSITION 20:23)INTEGER EXTERNAL INTO TABLE proj WHEN projno!=''(projno POSITION(25:27)INTEGER EXTERNAL,empno POSITION(1:4)INTEGER EXTERNAL)使用SQL * Loader,可以有select地只加载logging(请参阅WHEN子句),在加载数据时跳过某些列(请参见FILLER列)并加载多行logging(请参阅CONCATENATE和CONTINUEIF)一旦创build了控制文件,就需要从命令行启动sql loader这个:sqlldr用户名/密码@ connect_string control = ctl_file.ctl log = log.log你可以创build一个batch file来调用sqlldr。 有关更多示例,请参阅http://examples.oreilly.com/orsqlloader/这就是多function的SQL * Loader。  --------------------------------------------第二种加载方法:在这里情况下,我完全控制了电子表格,但对数据的控制较less,因为用户使用数据将电子表格发回给我。 我在同一个Excel文件中创build了另一个工作表,这个工作表已经locking了INSERT语句,这个INSERT语句引用了带有数据的工作表。 收到电子表格时,我将INSERT语句直接复制并粘贴到SQL * Plus中,或者间接将其插入到SQL脚本中。  Excel是dynamic组合dynamicSQL语句的好工具。  (请参阅Excel函数)--------------------------------------------三加载方法:如果你需要一个实用工具来将Excel数据加载到Oracle中,请从sourceforge下载quickload:http://sourceforge.net/projects/quickload ------------------- -------------------------第四种加载方法:理论上这应该起作用。 configuration通用数据库连接(异构数据库HS)通过ODBC从Oracle连接到Excel电子表格。 描述它(参见DESC命令)或CREATE TABLE AS SELECT col1,col2 FROM ExcelTable创build一个副本并查看默认情况下Oracle分配列的数据types。  http://www.e-ammar.com/Oracle_TIPS/HS/configuring_generic_database_con.htm ------------------------------- -------------参考:http://209.85.173.132/search?q=cache:GJN388WiXTwJ:www.orafaq.com/wiki/SQL*Loader_FAQ+Oracle+control+file+columns&cd = 3&hl = en&ct = clnk&gl = us http://forums.oracle.com/forums/thread.jspa?threadID=305918&tstart=0 http://techrepublic.com.com/5208-6230-0.html?forumID=101&threadID = 223797&messageID = 2245485 http://examples.oreilly.com/orsqlloader/ 

DBA曾经给我一个简单的窍门:

在另一个工作表的某个位置,创build一个公式如下:

INSERT INTO my_table (name, age, monkey) VALUES ('" & A1 & "', " & B1 & ", '" & C1 & "');" 

复制/粘贴到适当的行(Excel会自动将公式更改为A2,A3等)

然后将结果复制/粘贴到sqlplus中。

我能想到的最简单的方法就是把Access放在中间。 附加到Excel(或将数据导入到Access); 然后附加到目标Oracle表并复制。 Access Export工具也工作得很好。

使用外部表

也许DBD :: Oracle , DBD :: Excel和DBIx :: Copy的组合 ? 但肯定有一个更简单的方法…

如果它是一次性的,或者是罕见的,你可以导出到csv,那么Application Express或SQL Loader工具就可以正常工作。 如果它是一个常规的东西,那么克里斯的build议就是我要去的。