记一次SQL Server2005导入Oracle10G的折腾过程【供多种数据库导入导出数据的C#程序源码参考】

简介:

 曾经很早的时候用 SQL Server2000 时就见过我们老大,用 SQL Server2000 的导入导出功能,把数据都导入到了 Oracle9 里去,所以我也对导入导出数据有充分的信心,绝对能做好。


  客户需要一个Oracle版本的通用权限管理系统组件的数据库,而且为此还支付了5000元的技术咨询费。最近一段时间Oracle用得不多,电脑里没也装Oracle,想来想去应该家里的移动硬盘里,有Oracle11G,就装了一个,装好后总感觉用户创建的不正确,折腾来折腾去,又卸载又重新装了一下,这个前后估计耗费了2-3个小时。

  但是想从 SQL Server2005 导入到Oracle11G时总是出现错误,折腾了1-2个小时也没能搞定,接着又尝试从 SQL Server2008 导入到 Oracle11G还是不行照样有错无法正常导入,这时候简直有些绝望了,唉连微软的工具都无法正常导入导出数据。


  这时候我就咨询群里的朋友,有一个做开发的朋友推荐用 Kettle ,这个数据库导入导出工具好不容易在网上下载了一个,无法正常运行,又下载了JDK什么的,接着还说缺这个文件缺哪个文件,然后朋友又发了那些缺的文件,但是程序还是无法正常运行,折腾这些,足足消耗了2个小时以上,家里的网络只有2M,下载的速度也不太快。

  所以用一些不熟悉的东西,有一定的风险,同时可能还需要很多学习成本。我电脑用的是win7 32位的,始终没明白为啥 Kettle 没能正常运行。


  有一个比较擅长开发Oralce的朋友又推荐我用sqldeveloper-3.0.03.45.zip,但是死活找不到相关下载,好不容易Oracle的下载里有一个,但是也无法下载,版本也过低,由于这个软件也比较庞大,客户也无法从网上很顺利的发过来,左找右找,又耗费了1-2个小时,顺便看看相关的文章,折腾了半死,结果没能突破,再次想用工具的想法被破灭了。


  有朋友推荐用微软的SQL Server Business Intelligence Development Studio 来折腾导入导出,结果折腾1-2个小时,还是无法正确导入导出表结构及数据,又是失败告终,真是折腾人啊。


  4次想用工具导入数据的尝试,均告失败后,真是有些绝望了,足足一天时间就被这么浪费掉了。只能硬这头皮自己上了,客户的问题总需要解决。

  实在是没办法那就自己动手导入吧,从 PowerDesigner 15 的模型里把数据库表结构都折腾好,导入到 Oracle11G 结果发现表名被区别大小写了,又把所有创建好的表都删除了,折腾了1个小时,又把 表重新建立一遍, 把SQL语句里的“符号全部替换掉了,才把表结构建立好了。

  实在忍无可忍了,自己写了程序写了1个小时不到,把导入导出的程序写了一遍,一执行,几分钟就搞定了,唉,早知道这个效果早就自己写个程序就好了,前后也就2-3个小时就可以了。


  好不容易导入 Oracle11G 成功后,客户无法正确导入我提供的数据文件,客户用的是  Oracle10G, 我又在电脑里装了一个 Oracle10G 的客户端,又把数据用 Oracle10G 导出一次,客户才正确导入了数据,这么一来回折腾又耗费了好几个小时。


  这期间程序的多数据库兼容性测试也耗费了几个小时调试,其实光把 SQL Server2005导入Oracle10G 的折腾过程,足足耗费了2天时间,人都有点儿累了,虽然嘴巴说说是很简单的事情,真的折腾起来真是不只是脑力活儿还更是体力活儿。



  程序代码的参考如下:

//--------------------------------------------------------------------

//  All Rights Reserved , Copyright (C) 2011 , Hairihan TECH, Ltd. 
// --------------------------------------------------------------------

using  System.Data;

namespace  DotNet.Example
{
using  DotNet.BaseManager;
using  DotNet.DbUtilities;

public class  ImportExportData
   {
/// <summary>
///  导出数据库到Oralce
/// </summary>
public void  Export()
       {
// this.ExportTable("Items_Area");
// this.ExportTable("Items_AuditStatus");
// this.ExportTable("Items_Degree");
// this.ExportTable("Items_Duty");
// this.ExportTable("Items_Education");
// this.ExportTable("Items_Express");
// this.ExportTable("Items_Links");
// this.ExportTable("Items_MembershipLevels");
// this.ExportTable("Items_Nationality");
// this.ExportTable("Items_NewsCategory");
// this.ExportTable("Items_OnSale");
// this.ExportTable("Items_OrganizeCategory");
// this.ExportTable("Items_Party");
// this.ExportTable("Items_Pattern");
// this.ExportTable("Items_PayCategory");
// this.ExportTable("Items_PostCategory");
// this.ExportTable("Items_RoleCategory");
// this.ExportTable("Items_SalaryItemCategory");
// this.ExportTable("Items_SendCategory");
// this.ExportTable("Items_Sex");
// this.ExportTable("Items_Title");
// this.ExportTable("Items_Units");
// this.ExportTable("Items_UserAuditStates");
// this.ExportTable("Items_Wed");
// this.ExportTable("Items_WorkCategory");
// this.ExportTable("Items_WorkFlowCategories");
// this.ExportTable("Items_WorkingProperty");
// this.ExportTable("Base_Businesscard");
// this.ExportTable("Base_Comment");
// this.ExportTable("Base_Contact");
// this.ExportTable("Base_ContactDetails");
// this.ExportTable("Base_Exception");
// this.ExportTable("Base_File");
// this.ExportTable("Base_Folder");
// this.ExportTable("Base_Items");
// this.ExportTable("Base_Log");
// this.ExportTable("Base_Message");
// this.ExportTable("Base_News");

// this.ExportTable("Base_Organize");
// this.ExportTable("Base_Module", " SELECT * FROM BASE_MODULE ORDER BY PARENTID, ID ");
// this.ExportTable("Base_PermissionItem");
// this.ExportTable("Base_Role");
// this.ExportTable("Base_Staff");

// this.ExportTable("Base_Parameter");
// this.ExportTable("Base_Project");
// this.ExportTable("Base_Permission");
// this.ExportTable("Base_PermissionScope");

this .ExportTable( " Base_Sequence " );

// this.ExportTable("Base_StaffOrganize");
// this.ExportTable("Base_TableColumns");
// this.ExportTable("Base_User");
// this.ExportTable("Base_UserAddress");
// this.ExportTable("Base_UserOrganize");
// this.ExportTable("Base_UserRole");
// this.ExportTable("Base_StaffOrganize");
// this.ExportTable("Base_WorkFlowActivity");
// this.ExportTable("Base_WorkFlowCurrent");
// this.ExportTable("Base_WorkFlowHistory");
// this.ExportTable("Base_WorkFlowProcess");

           System.Console.ReadLine();
       }

public void  ExportTable( string  tableName)
       {
           ExportTable(tableName, tableName);
       }

/// <summary>
///  导出一个表
/// </summary>
/// <param name="tableName"> 表名 </param>
/// <param name="table"> 里面的数据 </param>
public void  ExportTable( string  tableName,  string  table)
       {
//  这里是获取数据
           SqlHelper sqlHelper  = new  SqlHelper( " Data Source=localhost;Initial Catalog=UserCenterV32;Integrated Security=SSPI; " );
           sqlHelper.Open();
           DataTable dataTable 
= new  DataTable(tableName);
if  (tableName.Equals(table))
           {
               dataTable 
=  sqlHelper.Fill( " SELECT * FROM  " +  table);
           }
else
           {
               dataTable 
=  sqlHelper.Fill(table);
           }
           sqlHelper.Close();

//  这里是插入数据
           OracleHelper oracleHelper  = new  OracleHelper( " Data Source=ORACLE11;user=DBO_USERCENTERV32;password=DBO_USERCENTERV32; " );
           oracleHelper.Open();
           oracleHelper.BeginTransaction();
           SQLBuilder sqlBuilder 
= new  SQLBuilder(oracleHelper);
try
           {
//  清除表数据
               oracleHelper.ExecuteNonQuery( " TRUNCATE TABLE  " +  tableName);
//  创建配套的序列
//  oracleHelper.ExecuteNonQuery("create sequence SEQ_" + tableName + " minvalue 1 maxvalue 999999999999999999999999 start with 1 increment by 1 cache 20");

int  r  = 0 ;
for  (r  = 0 ; r  <  dataTable.Rows.Count; r ++ )
               {
                   sqlBuilder.BeginInsert(tableName);
for  ( int  i  = 0 ; i  <  dataTable.Columns.Count; i ++ )
                   {
                       sqlBuilder.SetValue(dataTable.Columns[i].ColumnName, dataTable.Rows[r][dataTable.Columns[i].ColumnName]);
                   }
                   sqlBuilder.EndInsert();
                   System.Console.WriteLine(
" 表  " +  tableName  + "  已插入第  " +  r.ToString()  + "  行 " );
               }
               System.Console.WriteLine(
"  - - 表  " +  tableName  + "  共插入  " +  r.ToString()  + "  行 " );
               oracleHelper.CommitTransaction();
           }
catch  (System.Exception exception)
           {
               oracleHelper.RollbackTransaction();
               System.Console.WriteLine(tableName 
+ "  --  " +  exception.Message);
           }
finally
           {
               oracleHelper.Close();
           }
       }
   }

}





本文转自 jirigala 51CTO博客,原文链接: http://blog.51cto.com/2347979/1200711,如需转载请自行联系原作者
相关文章
|
前端开发 数据库
会议室管理系统源码(含数据库脚本)
会议室管理系统源码(含数据库脚本)
218 0
|
7月前
|
JavaScript API PHP
WordPress/Laravel企业官网源码-自适应多端SEO-前后端分离源码含数据库与部署文档​
本文详解如何结合WordPress与Laravel构建现代化企业官网,涵盖响应式设计、SEO优化、前后端分离、数据库安全及自动化部署。通过实战案例展示性能提升成果,并展望AI、云原生与区块链的未来融合方向,助力企业实现数字化增长。
|
11月前
|
SQL 人工智能 数据库
SQL Server 2025 - 从本地到云端的 AI 就绪企业数据库
SQL Server 2025 - 从本地到云端的 AI 就绪企业数据库
906 0
SQL Server 2025 - 从本地到云端的 AI 就绪企业数据库
|
前端开发 Java 关系型数据库
基于ssm的考研图书电子商务平台,附源码+数据库+论文
考研图书电子商务平台是一个基于Java的B/S架构系统,适用于Windows环境。该平台设有管理员和用户权限,管理员可管理商品、用户、留言板及订单,用户可管理收货地址、订单、收藏及购买商品。技术框架包括前端Vue+HTML+JavaScript+CSS+LayUI,后端SSM,数据库为MySQL。项目包含17个数据库表,支持Maven构建。提供演示视频和详细文档,支持免费远程调试安装,确保顺利运行。
232 13
基于ssm的考研图书电子商务平台,附源码+数据库+论文
|
Java 关系型数据库 MySQL
Java汽车租赁系统源码(含数据库脚本)
Java汽车租赁系统源码(含数据库脚本)
461 4
|
前端开发 Java 关系型数据库
基于ssm的社区物业管理系统,附源码+数据库+论文+任务书
社区物业管理系统采用B/S架构,基于Java语言开发,使用MySQL数据库。系统涵盖个人中心、用户管理、楼盘管理、收费管理、停车登记、报修与投诉管理等功能模块,方便管理员及用户操作。前端采用Vue、HTML、JavaScript等技术,后端使用SSM框架。系统支持远程安装调试,确保顺利运行。提供演示视频和详细文档截图,帮助用户快速上手。
521 17
|
前端开发 Java 关系型数据库
基于ssm的超市会员(积分)管理系统,附源码+数据库+论文,包安装调试
本项目为简单内容浏览和信息处理系统,具备管理员和员工权限。管理员可管理会员、员工、商品及积分记录,员工则负责积分、商品信息和兑换管理。技术框架采用Java编程语言,B/S架构,前端使用Vue+JSP+JavaScript+Css+LayUI,后端为SSM框架,数据库为MySQL。运行环境为Windows,JDK8+Tomcat8.5,非前后端分离的Maven项目。提供演示视频和详细文档,购买后支持免费远程安装调试。
647 19
|
前端开发 JavaScript Java
[Java计算机毕设]基于ssm的OA办公管理系统的设计与实现,附源码+数据库+论文+开题,包安装调试
OA办公管理系统是一款基于Java和SSM框架开发的B/S架构应用,适用于Windows系统。项目包含管理员、项目管理人员和普通用户三种角色,分别负责系统管理、请假审批、图书借阅等日常办公事务。系统使用Vue、HTML、JavaScript、CSS和LayUI构建前端,后端采用SSM框架,数据库为MySQL,共24张表。提供完整演示视频和详细文档截图,支持远程安装调试,确保顺利运行。
503 17
|
前端开发 Java 关系型数据库
基于ssm的培训学校教学管理平台,附源码+数据库+论文
金旗帜文化培训学校网站项目包含管理员、教师和用户三种角色,各角色功能通过用例图展示。技术框架采用Java语言,B/S架构,前端为Vue+HTML+CSS+LayUI,后端为SSM,数据库为MySQL,运行环境为JDK8+Tomcat8.5。项目含12张数据库表,非前后端分离,支持演示视频与截图查看。购买后提供免费安装调试服务,确保顺利运行。
228 14
|
前端开发 Java 关系型数据库
基于ssm的网络直播带货管理系统,附源码+数据库+论文
该项目为网络直播带货网站,包含管理员和用户两个角色。管理员可进行主页、个人中心、用户管理、商品分类与信息管理、系统及订单管理;用户可浏览主页、管理个人中心、收藏和订单。系统基于Java开发,采用B/S架构,前端使用Vue、JSP等技术,后端为SSM框架,数据库为MySQL。项目运行环境为Windows,支持JDK8、Tomcat8.5。提供演示视频和详细文档截图。
364 10
下一篇
开通oss服务