曾经很早的时候用 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();
            }
        }
    }

}

转载于:https://www.cnblogs.com/Sue_/articles/2157234.html

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

  1. 倒计算程序php,ASP_用ASP实现距指定日期的倒记时程序源码,给一个特殊的日子设计一个倒 - phpStudy...

    用ASP实现距指定日期的倒记时程序源码 给一个特殊的日子设计一个倒记时,也挺有意思的,而且利用几个时间函数,就可简单地完成ASP网页中距某个时间点的倒记时功能,改变Cdate函数的参数就可完成其他日期 ...

  2. 【java毕业设计】基于java+Eclipse +SQL Server的工厂进销存管理系统设计与实现(毕业论文+程序源码)——工厂进销存管理系统

    基于java+Eclipse +SQL Server的工厂进销存管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+Eclipse +SQL Server的工厂进销存管理系统 ...

  3. 【java毕业设计】基于javaEE+SSH+SQL Server的学生信息管理系统设计与实现(毕业论文+程序源码)——学生信息管理系统

    基于javaEE+SSH+SQL Server的学生信息管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于javaEE+SSH+SQL Server的学生信息管理系统设计与实现,文章 ...

  4. 微信官方开发者工具如何导入小程序源码demo

    本文原地址: http://www.php.cn/xiaochengxu-353507.html 最近有很多网友私信问我们网站上下载的那些小程序源码,怎么将它导入到 小程序开发者工具 中呢?因为问的人 ...

  5. C#毕业设计——基于C#+asp.net+SQL server的网上物流管理信息系统设计与实现(毕业论文+程序源码)——网上物流管理信息系统

    基于C#+asp.net+SQL server的网上物流管理信息系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于C#+asp.net+SQL server的网上物流管理信息系统设计与实 ...

  6. asp毕业设计——基于vb+VB.NET+SQL Server的图书馆管理信息系统设计与实现(毕业论文+程序源码)——图书馆管理信息系统

    基于vb+VB.NET+SQL Server的图书馆管理信息系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于vb+VB.NET+SQL Server的图书馆管理信息系统设计与实现,文章 ...

  7. C#毕业设计——基于C#+asp.net+SQL Server的电子书城系统设计与实现(毕业论文+程序源码)——电子书城系统

    基于C#+asp.net+SQL Server的电子书城系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于C#+asp.net+SQL Server的电子书城系统设计与实现,文章末尾附有 ...

  8. informix数据库unload导出数据Load导入数据

    informix数据库unload导出数据&&Load导入数据 进入数据库 执行命令 dbaccess  test - - 例如: 导出全部数据 unload to /opt/info ...

  9. C#毕业设计——基于C#+asp.net+SQL server的教学网站及网上考试系统设计与实现(毕业论文+程序源码)——教学网站及网上考试系统

    基于C#+asp.net+SQL server的教学网站及网上考试系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于C#+asp.net+SQL server的教学网站及网上考试系统设计 ...

最新文章

  1. 重庆交通大学2019年计算机系收分,重庆交通大学2019年考研复试分数线已公布
  2. C++语言基本类型—整型
  3. 着手一个手游项目的思考
  4. MySQL Query Log
  5. 蓝牙L2CAP剖析(一)
  6. 【原创视频】docker pull和docker run运行原理分析
  7. css --- 让不同的浏览器加载不同的CSS
  8. SharePoint v3:忘掉模拟用户Impersonate,SPSecurity.RunWithElevatedPrivileges来了
  9. 带你用Python玩转PPT
  10. Android Media Framework(1): 总纲
  11. php transform,css transform属性怎么用
  12. AD库文件(元件库+封装库+3D模型)
  13. Linux如何增加SSH端口号
  14. QQ音乐API爬取全过程
  15. JDK下载常用的几种方法
  16. java socket分包粘包 代码_分享java中处理socket通信过程中粘包情况的实例代码
  17. python IDLE设置了清屏插件,不起作用怎么办
  18. 中概股危机未过,达达集团此时赴美IPO 凭什么?
  19. 计算机计算芯片原理,集成电路-CPU运行基本原理 CPU是计算机的核心,弄清楚CPU的运行基本原理,也就明白了计算机系统中各种芯片的数据处理和存储功能是如何实现。 在往期... - 雪球...
  20. java开发的职业发展路线是怎样的?

热门文章

  1. python 安装包时出现红字_Python安装(Windows 7 8 10)
  2. onenote快捷键_onenote链接系列:4种链接笔记的地址
  3. qt中的update()
  4. 信息系统项目管理师考试时间安排
  5. 信息系统项目管理师:第4章:项目整体管理与变更管理-章节真题
  6. 《系统集成项目管理工程师》必背100个知识点-38资源平滑和资源平衡
  7. CentOS中使用Docker来部署Nginx
  8. Ionic+Angular实现中英国际化(附代码下载)
  9. Android中TimePicker时间选择器的使用和获取选择的时和分
  10. 史上最全Winform中使用ZedGraph教程与资源汇总整理(附资源下载)