PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统,是世界上可以获得的最先进的开放源码的数据库系统,但要实现数据从PostgreSQL迁移至Oracle至今还没有到直接的工具可以利用,所以我们现在可以借助SqlServer2005的数据导入导出功能和OracleSQL*Loader
一、SqlServer2005导入导出功能
我们以PostgreSQL中的表test为例。
1、 备份表testsql格式
2、 notepad打开test.sql文件。用notepad是因为SqlServer和记事本都打不开由PostgreSQL生成的sql文件。
3、 notepad中的数据部分全部拷贝至Excel文件中,记为test.xlsx。之所以要把数据转移至Exel文件中是为了把这些数据导入SqlServer,当然当数据量很大时就必须用Excel2007或者更高版本,Excel2003只支持65536行记录。
4、 Test.xlsx中的数据导入SqlServer2005,详见blog.csdn/qygaojiansheng/archive/2009/04/26/4126364.aspx,这样数据就转移到了SqlServer的表test中。
5、 利用SqlServer2005的导入导出工具将test表中的数据导入至Oracle中。这个过程会遇到很多问题,最致命的一个是数据量很大或者是PostgreSQL数据库中存在非法数据时,导出进程进行中会出现错误而终止,导致失败。
6、 SqlServer2005导入导出功能图解,假设test表在示例数据库Northwind中。
右键“Northwind—>“任务”—>“导出数据”,点击出现下列对话框:
点击“下一步”,
默认,点击“下一步”,
在下拉列表中选择目标数据源,“Oracle provider for OLE DB,出现下面对话框:
点击属性,
      按照图中所示配置参数,“测试连接”,成功后点击“确定”,
一直“下一步”,至
勾选“test”,“下一步”,直至“完成”
如果没有什么错误出现,就OK了。
二、利用SQL*Loader
由于前面的方法有些表的数据无法成功导入,所以我们转而利用SQL*Loadersqlserver备份表语句SQL*Loade
r是大型数据仓库选择使用的数据加载方法,我们可以利用它将外部数据导入到Oracle中。
下面是应用SQL*Loader的简单例子
现在我们的excel表格test.xls中有N条记录的数据,我们的任务就是把这些数据倒入到ORACLE中的表tbl中。
 
首先,把表格另存为csv格式的文本文件test.csv(逗号分隔符)(也可以保存为制表分隔符txt文件)
然后,创建控制文件l,也即把以下内容copy至新建的记事本中
load data
infile 'C:\test.csv'                ——'C:\test.csv'为文件路径
insert into table tbl
fields terminated by ','            ——逗号分隔符
(columnname1columnname2,…) ——顺序与表中顺序一致
 
该记事本以l形式保存于C:\ l
接着在命令行执行
 
C:\documents and settings\computername>sqlldr username/password control=C:\ l
 
当然在这之前必须保证username中表tbl的存在,因此创建表格
Create table tbl
(column1 datatype,
Column2 datatype,
……
)
但是我们在实际的PostgreSQL数据导入操作过程中遇到了很多问题,经常数据不能全部导入成功,生成大量的坏数据,当然如果可以保证原始数据没有非法数据存在,上面的方法完全是可行的,数据的数量不是问题所在,因为SQL*Loader强大的功能可以解决,关键是数据的质量。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。