我正在使用 openrowset 将 csv 文件导入 SQL Server。csv 文件中的一列包含科学记数法 (1.08E+05) 中的数字以及正在插入的表中的列
默认情况下,它将值导入为 1 并忽略 .08E+05。
我尝试在执行查询时使用 cast() 和 convert() 直接转换值,并将表中的数据类型设置为字符串并将其导入。所有这些方法都具有相同的行为,即忽略 .08E+05。
有没有办法在没有 .08E+05 的情况下将值导入为 108000 而不是 1 而无需更改 csv 文件本身?
将数据类型设置为 varchar 并读取 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 没有问题。