我正在使用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/

10-09 06:44
查看更多