使用BULK INSERT插入空格而不是NULL

时间:2019-05-13 15:12:42

标签: sql sql-server

我正在使用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%'

1 个答案:

答案 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