在C#中使用SqlBulkCopy时舍入数字数据

时间:2013-02-20 12:56:42

标签: c# sql-server oracle11g sqlbulkcopy

我正在使用SqlBulkCopy将数据从Oracle 11g源导入MS SQL Server 2012.但Oracle中的NUMERIC列之一包含的值为53682.0(~35次)1,263.9(~32次) )。 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表中的任何内容。

1 个答案:

答案 0 :(得分:2)

您不能只修改Oracle SELECT查询,例如截断有问题的数值?