При вставке из Excel в sql преобразовать все числа в число с плавающей запятой

#c# #sql-server-2008

#c# #sql-server-2008

Вопрос:

Вот мой код:

 SqlCommand cmd2 = new SqlCommand("insert into Market (Barcode,Name,Code,TemporaryStock,VatcodeID,Unit,NetValue,DiscountValue,UnderlyingValue,VatValue,TotalValue) select * from OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database="   textBox1.Text   "', 'SELECT * FROM [Page1$H:R]')", con);
cmd2.ExecuteNonQuery();
 

Но мои строки от ‘N’ до R nvarchar , я хочу преобразовать их перед вставкой в float. Или, если есть код для преобразования всех nvarchar чисел из Excel в float

Моя ошибка, когда я пытаюсь вставить в таблицу:

Сообщение 8114, уровень 16, состояние 5,
ошибка строки 1 при преобразовании типа данных nvarchar в float.

Должен ли я использовать регистр?

Это мой дизайн таблицы:

введите описание изображения здесь

Комментарии:

1. Вы должны ввести данные как есть (извлечь), запустить свои бизнес-правила для выполнения любых необходимых преобразований (преобразовать), затем вставить в базу данных (загрузить). Даже если это можно сделать за один шаг, любой бит неверных данных нарушит процесс.

2. Можете ли вы написать мне небольшой пример?

3. Я могу попытаться помочь, если вы попытаетесь и у вас возникнут конкретные вопросы. Я бы, вероятно, перенес данные Excel в память, если они не слишком велики, как все типы объектов, затем попробуйте проанализировать () все, что не является строкой, а затем вставить в базу данных. Если его слишком много для памяти, используйте промежуточную таблицу в базе данных. Все это довольно простые задачи сами по себе и очень доступны для поиска в Google.

4. Также было бы очень полезно, если бы я конвертировал определенные строки Excel перед вставкой. Но я не знаю, возможно ли это. Что-то вроде этого вставьте в sql_table выберите Приведение (N1 как float), Приведение (O1 как float), приведение (P1 как float) из OPENROWSET(‘Microsoft.ACE.OLEDB.12.0’….

5. Это может сработать, но как только что-то не может быть приведено, оно ломается. Если ваши данные всегда на 100% чистые, вам повезло.