SQL Server 2005数据表导出到Oracle的方案 .

来源:互联网 发布:姚明cba数据 编辑:程序博客网 时间:2024/06/04 18:03

SQL Server数据导出到Oracle的方案

假设要将SQL Server中的Northwind数据库中的Products表导出到Oracle的Scott用户

首先需要有安装SQL Server企业版

1.打开Microsoft SQL Server Management Studio 右键点击要导出的库,任务-导出数据,进入导出流程。

2.下一步,选择数据源
[数据源]选择“SQL Native Client”,这应该是缺省值。
[服务器]选择要导出数据的服务器,如果是本机,选择(local) 和身份验证方式。
[数据库]选择要导出的数据所在的库,这里选择Northwind

3.下一步,选择目的
[目的]选择Oracle Provider for OLE DB  点击属性输入数据源、用户名、密码。

4.下一步,指定表复制或查询
这里有两个选项,复制一个或多个表或视图的数据和编写查询以指定要传输的数据,根据需求的不同去选择

5.下一步,选择源表和视图
勾选要导出的表数据

6.下一步,保存、调度和复制包
选中立即运行

7.完成
执行导出工作

注意:因为oracle的表名都是大写的,而SQL的表可能是大小混写的,所以导入后在oracle里查不到该表,比如这个Products表在oracle里查询就应该写成select * from scott."Products";为了方便查询可以通过批量修改表名为大写以便后面导数据的工作。
---导完数据后执行下面语句,生成把表名修改成大写的操作
select 'ALTER TABLE '||'"'||table_name||'"'||' RENAME TO '|| upper(table_name)||';' from user_tab_comments;
--------------------
处理表名
SELECT  'ALTER TABLE ' || chr(34) || table_name || chr(34) ||   ' RENAME TO ' || UPPER(table_name) || ';'  AS SqlCommand FROM  user_tables WHERE  table_name != UPPER(table_name);
【这个语句好使,实测】
--------------
列的处理,也差不多

SELECT
'ALTER TABLE ' || table_name || ' RENAME COLUMN '
|| chr(34) || column_name || chr(34) || ' TO ' || UPPER(column_name) || ';' AS SqlCommand
 FROM
user_tab_columns
WHERE
column_name != UPPER(column_name);
然后把这些都执行一下即可
--------------------------------------
把生成的文件执行即可把此用户下的所有表名修改成大写。
 
注意:如在导出过程中出现错误或导出的表中多出或少了几个字段,一般是数据类型的不匹配或多个表之间存在主外键关联导致可以在导出前适当的修改sql server表中字段的数据类型和同时导出关联的几个表。导出后可能出现字段名有双引号之类的,可以在oracle中手工改一下,建立主键、索引之类的
原创粉丝点击