gpt4 book ai didi

sql-server - 从临时表插入 - 创建太多行

转载 作者:行者123 更新时间:2023-12-01 13:04:37 29 4
gpt4 key购买 nike

我将 CSV 文件批量导入到临时表中,然后将这些行插入到目标表中(如果它们尚不存在)。

当我开始这个过程时,我的表有以下值

VECH01 AAA 111
VECH01 BBB 222
VECH01 CCC 333
VECH02 AAA 111
VECH02 BBB 222
VECH02 CCC 333

当我导入具有这些值的 CSV 文件时:

VECH01|DDD|444
VECH01|DDD|555
VECH02|CCC|XXX

第一行是imported VECH01 DDD is not in the database.
好的

第二行已导入,但 VECH01 DDD 已在数据库中,它是在之前的插入中导入的。
不行

第三行没有导入,因为VECH02 CCC已经存在于数据库中。
好的

CREATE TABLE #csv 
(
CarRedbookCode nvarchar(50) COLLATE Latin1_General_CI_AS,
AccessoryCode nvarchar(50) COLLATE Latin1_General_CI_AS,
AccessoryCodeAutoGeneral nvarchar(50) COLLATE Latin1_General_CI_AS
)

DECLARE @SqlStatement nvarchar(4000)
SET @SqlStatement =
'
BULK INSERT #csv
FROM ''' + @FileName + '''
WITH
(
FIELDTERMINATOR = ''|'',
ROWTERMINATOR = ''\n''
)
'
EXEC sp_executesql @SqlStatement

INSERT INTO MapRedbookAccessory (CarRedbookCodeAccessoryCode, CarRedbookCode, AccessoryCode, AccessoryCodeAutoGeneral)
select
src.CarRedbookCode + src.AccessoryCode
, src.CarRedbookCode
, src.AccessoryCode
, src.AccessoryCodeAutoGeneral
from
#csv src
left join
MapRedbookAccessory dst on dst.CarRedbookCodeAccessoryCode = src.CarRedbookCode + src.AccessoryCode
where
dst.CarRedbookCodeAccessoryCode is null

最佳答案

发生这种情况是因为 INSERT 语句不单独处理行。可能有更好的方法来执行此操作,但您可以使用 ROW_NUMBER 函数为每个代码/附件仅插入第一行:

INSERT INTO  MapRedbookAccessory (CarRedbookCodeAccessoryCode, CarRedbookCode,     AccessoryCode, AccessoryCodeAutoGeneral) 
select
src.CarRedbookCode + src.AccessoryCode
, src.CarRedbookCode
, src.AccessoryCode
, src.AccessoryCodeAutoGeneral
from
(select *, ROW_NUMBER() OVER (PARTITION BY CarRedbookCode, AccessoryCode ORDER BY AccessoryCodeAutoGeneral) AS row
from #csv) src
left join
MapRedbookAccessory dst on dst.CarRedbookCodeAccessoryCode = src.CarRedbookCode + src.AccessoryCode
where
dst.CarRedbookCodeAccessoryCode is null
and src.row = 1

如果有多行,您可以根据要插入的 AccessoryCodeAutoGeneral 更改 ORDER BY

关于sql-server - 从临时表插入 - 创建太多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3919884/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com