Я использую OpenRowset для импорта файла CSV на SQL Server. Один из столбцов в файле CSV содержит номера в научных обозначениях (1.08E + 05), а столбец в таблице вставляется
по умолчанию, он импортирует значение как 1 и игнорирование .08E + 05.
Я попробовал использовать CAST () и преобразовывать (), чтобы преобразовать значение непосредственно при выполнении запроса, а также настройки данных DataType в таблице в виде строки символов и импортировании его как таковой. Все эти методы имеют одинаковое поведение, где .08E + 05 игнорируется.
Существует ли способ иметь значение, импортируемую как 108000 вместо 1 без .08E + 05, не изменив сам файл CSV?
Настройка DataType в качестве варечана и чтения в файле CSV, появляется Имейте тот же эффект со следующим кодом:
CREATE TABLE #dataTemp (StartDate datetime, Value varchar(12))
SET @insertDataQuery = 'SELECT Date, CSVValue from OpenRowset(''MSDASQL'', ''Driver={Microsoft Text Driver (*.txt; *.csv)}; DefaultDir='
SET @insertDataQuery = @insertDataQuery + 'C:\Data\;'',''SELECT * FROM '+ '11091800.csv' + ''')'
INSERT INTO #dataTemp EXEC(@insertDataQuery)
SELECT * FROM #dataTemp
Не все значения в файле CSV имеют научную обозначение и значение без него, например, 81000 столкнутся без проблем.