我正在使用SqlBulkCopy
将数据从Oracle 11g源导入MS SQL Server2012。但是Oracle中的NUMERIC
列之一包含诸如53682.0(〜35times)1、263.9(〜32times)之类的值。 Sql Server中的目标列当前为FLOAT
数据类型,当前出现以下异常:
算术运算导致溢出。
这是我的示例代码:
using (SqlConnection conn = new SqlConnection(destConnString))
{
conn.Open();
try
{
using (OracleConnection connection = new OracleConnection(srcConnString))
{
using (OracleCommand command = new OracleCommand(selectQuery, connection))
{
connection.Open();
using (OracleDataReader reader = command.ExecuteReader(CommandBehavior.Default))
{
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(conn, SqlBulkCopyOptions.KeepIdentity, trans))
{
bulkCopy.DestinationTableName = tableName;
bulkCopy.BulkCopyTimeout = 0;
bulkCopy.WriteToServer(reader);
}
}
}
}
trans.Commit();
}
....
我试图四舍五入这些数据,但是没有成功,也无法更改Oracle表中的任何内容。
最佳答案
您不能只是修改您的Oracle SELECT查询,例如截断有问题的数值?
关于c# - 在C#中使用SqlBulkCopy时四舍五入数字数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14980419/