Округление числовых данных при использовании SqlBulkCopy в C#

Я использую SqlBulkCopy для импорта данных из источника Oracle 11g в MS SQL Server 2012. Но один из столбцов NUMERIC в Oracle содержит такие значения, как 53682,0 (~ 35 раз) 1, 263,9 (~ 32 раза). Целевой столбец на сервере Sql в настоящее время имеет тип данных 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.


person user2091224    schedule 20.02.2013    source источник
comment
Не можете ли вы изменить столбец в своем запросе? Выполняя массовое копирование между экземплярами SQL Server, я бы просто CAST присвоил поле целевому типу данных в запросе.   -  person JNK    schedule 20.02.2013
comment
Диапазон значений, которые может принимать столбец с плавающей запятой, составляет от -1,79E+308 до -2,23E-308, 0 и от 2,23E-308 до 1,79E+308. Я сомневаюсь, что числовой столбец в Oracle превышает этот диапазон. Я думаю, что это связано с чем-то помимо типов данных.   -  person Mike Sherrill 'Cat Recall'    schedule 20.02.2013
comment
Поступают ли данные из Oracle с запятыми, как показано в значении 1263,9 (~ 32 раза)?   -  person Mike Sherrill 'Cat Recall'    schedule 20.02.2013
comment
@Catcall Нет, они не идут с запятыми, запятая выше используется для разделения двух номеров образцов 53682,0(~35x)1 и 263,9(~32times)   -  person user2091224    schedule 20.02.2013


Ответы (1)


Разве вы не можете просто изменить свой запрос Oracle SELECT, например. обрезать оскорбительное числовое значение?

person Joe    schedule 20.02.2013
comment
Спасибо, это было действительно простое решение, я не думал об этом! :) - person user2091224; 20.02.2013