我正在使用SSIS进行不同数据库之间的表传输。由于它不是特定于一个源和目标,并且SSIS本身没有动态列映射,因此我使用OracleBulkCopy和SqlBulkCopy在C#上实现了一个脚本,以便写入目标,当然这取决于数据库类型。如果我错了,请纠正我,但我认为这将是性能最佳的解决方案,使用Oracle或Microsoft直接提供的特定驱动程序,对吧? 无论如何,我遇到了问题。
我试图将一个视图复制到一个表,在Oracle中。我不确定这个错误是我的想法,但我的猜测是列类型不匹配。所有列名都匹配,因此我不必进行任何映射,但类型可能存在一些差异,例如我想将VARCHAR复制到NUMBER等。 OracleColumnMapping仅适用于列名,而不适用于我找到的类型。
所以,我是正确的假设类型不匹配是问题,如果是,是否有任何方法可以设置BulkCopy强制类型转换到目标表?如果可以将其设置为自动键入强制转换所有列的选项,而不是通过映射,那将会很棒。但任何解决方案都请告诉我。
P.S。:我认为同样适用于SqlBulkCopy,但如果没有,我也需要一个解决方案,尽管我还没有在MSSQL上尝试过。
感谢任何帮助过的人。
答案 0 :(得分:0)
在我看来,我发现使用SSIS包(.dtsx)更容易从Oracle DB转移到SQLServer DB。使用工具箱可以轻松制作演员表。此类操作不需要C#。