接着上文【原创「Oracle移行到Sqlserver完美解决案」⑧案1架构说明_SQL结构】,继续说明
④Oracle数据=》文件=》Sqlserver
3)处理Powershell,04_DataExportAndImport.ps1说明
循环调用C#生成的Master和业务数据的sql文件,使用sqluldr2.exe命令将表的数据,批量导出到txt文件,再将txt文件,通过bulk insert语句插入到Sqlserver
4) 04_DataExportAndImport.ps1的代码内容说明
- 循环sql文件的文件夹,按照文件名升序排列,循环得到每个sql文件
- 从取到的sql文件中,取得1,2,3行的内容
- 用第2行的view创建sql文,在sqlserver数据库创建view
Invoke-Sqlcmd -Query $viewSql -ServerInstance $ServerInstance -Database $sqlServerDbName -Username "la" -Password "la"
- 通过sqluldr2.exe,执行第3行的sql文,将表数据导出到txt文件
.exesqluldr2.exe user=la/la@$OracleDbName query=`"$bcpSql`" field='0x09|TTT|' record=0x0a charset=AL32UTF8 file=$dataFile
关于sqluldr2.exe的使用,这些参数的作用,我在之前的文章中说过,大家可以去查找
- 通过BULK INSERT命令将导出的txt文件数据,导入到sqlserver的对应表中
$insSql = "BULK INSERT " + $viewName + " FROM N'" + $dataFile + "' WITH ( FIELDTERMINATOR='|TTT|',CODEPAGE=65001,ROWTERMINATOR='0x0A');"
Invoke-Sqlcmd -Query $insSql -ServerInstance $ServerInstance -Database $sqlServerDbName -Username "la" -Password "la"
关于BULK INSERT的使用,这些参数的作用,我在之前的文章中说过,大家可以去查找
- 删除创建的view
$dropViewSql = "DROP VIEW " + $viewName
Invoke-Sqlcmd -Query $dropViewSql -ServerInstance $ServerInstance -Database $sqlServerDbName -Username "la" -Password "la"
到这为止,案1的主要表的导出插入,就介绍完了,接下来对blob相关表,自定义的表的移行进行说明。鉴于篇幅限制,先介绍到这,接下来会陆续说明。有好的想法意见,可以关注联系我,谢谢