第一次使用SqlServer2012,界面和VS2012风格一致了,Great!
进入正题,这篇博文主要写一下自己亲测的一个案例,使用SqlServer2012的“导入和导出数据”功能向Oracle11g导入数据表,本机装的是SqlServer2012和Oracle11g客户端,Oracle实例安装在服务器192.168.40.115上。
- 打开“导入和导出数据”工具,第一个选择数据源,本地服务器名称就写点号“.”或者“localhost”,身份验证选择第一个即可,然后选择要导出的数据库名称,接着点击下一步。
2. 在“目标”下拉框选择“.Net Framework Data Provider for Oracle”(SqlServer2012版本的导入导出数据工具去除了以前版本里的Microsoft ODBC for Oracle),在Password和User ID填写登录到Oracle数据库的密码和用户名,在DataSource栏按照以下格式填写(尾部不要带 有分号):
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.40.115)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orcl)))
填好后,点击空白处“ConnectionString”会自动生成。点击下一步。
3. 如果连接不成功会提示:
如果连接成功,则会进入下一步:
如果不是整表导出,则选择第二个选项,使用SQL语句筛选导出数据,这里是整表导出,所以直接点击下一步。
4. 选择需要的导出的表。
双击所选表的对应的按钮,打开“列映射”窗口,
再点击“编辑 SQL”按钮,
这里发现工具自动生成的Oracle中创建表的SQL语句有一点小问题,就是表名和列名都是带双引号的,这样生成的表名和列名也是带双引号的,但如果在这里将SQL语句修改正确,最终导出数据的结果是只创建成功了表,但数据传输失败,所以选择默认的SQL语句执行,最后在Oracle里更改表名和列名。
5. 由于Oracle没有int类型,所以需要进行转换,根据情况,选择出错时的处理方式,再点击下一步。
6. 这一步没什么好说的,点击“完成”,则执行数据导出工作。
7. 执行成功的结果
8. 最后需要在PL/SQL中对带双引号的表名和列名进行重命名处理,分别使用两条SQL语句:
“ALTER TABLE old_table_name RENAME TO new_table_name;--重命名表
ALTER TABLE [table_name] RENAME COLUMN [column_name] TO [new_column_name];--重命名列”
结束语:这次是通过“.Net Framework Data Provider for Oracle”的方法向Oracle导入数据,因为工具自身的缺陷,最后需要对结果进行一下小处理,总体而言方法还算简便。