openrowsetを使用してcsvファイルをSQLServerにインポートしています。csvファイルの列の1つに、科学的記数法(1.08E + 05)の数値と、挿入されるテーブルの列が含まれています
デフォルトでは、値を1としてインポートし、.08E+05を無視します。
cast()とconvert()を使用して、クエリの実行時に値を直接変換し、テーブルのデータ型を文字列として設定してインポートしようとしました。これらのメソッドはすべて、.08E+05が無視されるという同じ動作をします。
csvファイル自体を変更せずに.08E+05なしで値を1ではなく108000としてインポートする方法はありますか?
データ型を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は問題なく検出されます。