.csv
カンマ区切りのフラット ファイルをにインポートしようとすると、元のデータの列 a がリテラル文字列Microsoft SQL server 2008R2 64-bit instance
にstring
なり、列でインポート エラーが発生します。誰でも助けてもらえますか???NULL
"NULL"
numeric
質問する
19109 次
3 に答える
3
データをステージング テーブルに配置し、SQL コードを使用して運用テーブルに挿入します。
update table1
set field1 = NULL
where field1 = 'null'
または、多くのフィールドを実行したい場合
update table1
set field1 = case when field1 = 'null' then Null else Field1 End
, field2 = case when field2 = 'null' then Null else Field2 End
, field3 = case when field3 = 'null' then Null else Field3 End
于 2013-06-27T18:58:15.183 に答える
0
HLGEMの答えに加えて、私はそれを動的に行い、ここですべての列タイプがステージングテーブルにロードされVARCHAR
、次に実行されます:
DECLARE @sql VARCHAR(MAX) = '';
SELECT @sql = CONCAT(@sql, '
UPDATE [staging].[',[TABLE_NAME],']
SET [',[COLUMN_NAME],'] = NULL
WHERE [',[COLUMN_NAME],'] = ''NULL'';
')
FROM INFORMATION_SCHEMA.COLUMNS
WHERE [TABLE_SCHEMA] = 'staging'
AND [TABLE_NAME] IN ('MyTableName');
SELECT @sql;
EXEC(@sql);
次に、次のようにします。
INSERT INTO [dbo].[MyTableName] ([col1], [col2], [colN])
SELECT [col1], [col2], [colN]
FROM [staging].[MyTableName]
テーブル[dbo].[MyTableName]
が目的の列タイプで定義されている場合、これも失敗し、タイプ変換エラーで通知されます...
于 2014-09-22T12:24:11.297 に答える