#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% чистые, вам повезло.