我正在使用BULK INSERT将多个寄存器插入数据库中,该数据库中已经有数据。 我想知道是否有任何方法可以插入空白而不是NULL,因此插入的数据在视觉上与先前的数据一致。 这是我正在使用的脚本。
BULK INSERT Documentos
FROM '\\Cate-des-tn-032\2015\InsertAWeb_07-05-2019.csv'
WITH (
FIELDTERMINATOR = ';',
ROWTERMINATOR = '\n'
)
UPDATE Documentos
SET FechaCargaLote = CONVERT(VARCHAR(50), GETDATE(), 120)
WHERE FechaCarga LIKE '%2015%'
答案 0 :(得分:1)
这是使用登台表的方案。首先将所有数据加载为VarChar()。然后根据需要将转换插入到您的实际表中。
设置表:
Create Table #staging_tbl
(
id VarChar(5),
dt VarChar(15)
)
Create Table #actual_tbl
(
id Int,
dt VarChar(10)
)
示例文件[test.txt]
1;2019-05-12
1;2019-05-11
1;2019-05-10
1;
1;2019-05-08
2;2019-04-19
批量插入
BULK INSERT #staging_tbl
FROM 'c:\Downloads\test.txt'
WITH
(
FIELDTERMINATOR = ';',
ROWTERMINATOR = '\n'
)
将数据从临时表移至实际表:将NULL转换为“空白”
Insert Into #actual_tbl
SELECT
id,
Case When dt Is Null Then '' Else dt End As d
FROM #staging_tbl
查询实际表
Select * From #actual_tbl
结果:
id dt
1 2019-05-12
1 2019-05-11
1 2019-05-10
1
1 2019-05-08
2 2019-04-19