Aru*_*mar 4 sql sql-server csv
我正在尝试根据CSV文件更新表.我有CSV列表的Id和修剪编号,我需要根据SQL表中的特定ID更新修剪编号.
到目前为止我写的脚本
-- Create a temporary table for the import
drop table #InterpreterTrimNumbers
CREATE TABLE #InterpreterTrimNumbers(
[SAPInterpreterId] int,
TempTrimNumber varchar(100)
)
BEGIN TRANSACTION
-- Bulk import into the temporary table
BULK INSERT #InterpreterTrimNumbers FROM 'C:\CSVData\Trim numbers.csv' WITH (
FIRSTROW = 2,
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n',
ERRORFILE = 'C:\CSVData\Trim numbers-errors.csv',
TABLOCK
)
update Interpreters set TrimNumber = (select TempTrimNumber from #InterpreterTrimNumbers where #InterpreterTrimNumbers.SAPInterpreterId = Interpreters.SAPInterpreterID )
Commit Transaction
Run Code Online (Sandbox Code Playgroud)
即使CSV文件只有110条记录,这一行也会返回1824行.我只想用特定的SAPInterpreterID更新记录
任何帮助表示赞赏.
假设您只有110个记录插入到临时表中并且这些ID在Interpreters表中是唯一的,那么这个语法应该是这样的
UPDATE i
SET TrimNumber = tempintr.TempTrimNumber
FROM Interpreters AS i INNER JOIN
#InterpreterTrimNumbers tempintr
ON i.TrimNumber= tempintr.TempTrimNumber
Run Code Online (Sandbox Code Playgroud)
您的查询无法工作的原因是因为它试图更新Interpreters表中的每个数字.如果与临时表匹配,那么这就是您所需要的.但是当没有匹配时,您的查询将返回,NULL
导致不匹配的记录更新到NULL
.
归档时间: |
|
查看次数: |
942 次 |
最近记录: |