1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 记一次SQL Server导入Oracle10G的折腾过程【供多种数据库导入导出数据的C#程序源

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

时间:2019-12-21 22:21:22

相关推荐

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

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

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

但是想从SQL Server 导入到Oracle11G时总是出现错误,折腾了1-2个小时也没能搞定,接着又尝试从SQL Server 导入到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 Server导入Oracle10G 的折腾过程,足足耗费了2天时间,人都有点儿累了,虽然嘴巴说说是很简单的事情,真的折腾起来真是不只是脑力活儿还更是体力活儿。

程序代码的参考如下:

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

//AllRightsReserved,Copyright(C),HairihanTECH,Ltd.

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

usingSystem.Data;

namespaceDotNet.Example

{

usingDotNet.BaseManager;

usingDotNet.DbUtilities;

publicclassImportExportData

{

///<summary>

///导出数据库到Oralce

///</summary>

publicvoidExport()

{

//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*FROMBASE_MODULEORDERBYPARENTID,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();

}

publicvoidExportTable(stringtableName)

{

ExportTable(tableName,tableName);

}

///<summary>

///导出一个表

///</summary>

///<paramname="tableName">表名</param>

///<paramname="table">里面的数据</param>

publicvoidExportTable(stringtableName,stringtable)

{

//这里是获取数据

SqlHelpersqlHelper=newSqlHelper("DataSource=localhost;InitialCatalog=UserCenterV32;IntegratedSecurity=SSPI;");

sqlHelper.Open();

DataTabledataTable=newDataTable(tableName);

if(tableName.Equals(table))

{

dataTable=sqlHelper.Fill("SELECT*FROM"+table);

}

else

{

dataTable=sqlHelper.Fill(table);

}

sqlHelper.Close();

//这里是插入数据

OracleHelperoracleHelper=newOracleHelper("DataSource=ORACLE11;user=DBO_USERCENTERV32;password=DBO_USERCENTERV32;");

oracleHelper.Open();

oracleHelper.BeginTransaction();

SQLBuildersqlBuilder=newSQLBuilder(oracleHelper);

try

{

//清除表数据

oracleHelper.ExecuteNonQuery("TRUNCATETABLE"+tableName);

//创建配套的序列

//oracleHelper.ExecuteNonQuery("createsequenceSEQ_"+tableName+"minvalue1maxvalue999999999999999999999999startwith1incrementby1cache20");

intr=0;

for(r=0;r<dataTable.Rows.Count;r++)

{

sqlBuilder.BeginInsert(tableName);

for(inti=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()+"行");

mitTransaction();

}

catch(System.Exceptionexception)

{

oracleHelper.RollbackTransaction();

System.Console.WriteLine(tableName+"--"+exception.Message);

}

finally

{

oracleHelper.Close();

}

}

}

}

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。