所以我在我的数据库中有这个表。我们将其称为users
。
UserID UserName UserDescription
-----------------------------------
1 test1 Test User #1
2 test2 Test User #2
3 test3 Test User #3
4 test4 Test User #4
5 test5 Test User #5
我有这个CSV文件:
1,"Harry Potter"
4,"Hermione Granger"
3,"Ron Weasley"
我想要的是从CSV文件更新表格。这是我正在寻找的结果:
UserID UserName UserDescription
-----------------------------------
1 test1 Harry Potter
2 test2 Test User #2
3 test3 Ron Weasley
4 test4 Hermione Granger
5 test5 Test User #5
无需编写程序来执行此操作,是否有办法从CSV文件中完成此类更新?
基本上我想做一些类似于你可以在导入数据向导中做的事情 - 将CSV列映射到各自的数据库列 - 但要让数据库更新任何主键所在的列数据库与CSV文件中的已分配列匹配。
(SQL Server 2012)
答案 0 :(得分:1)
您可以使用openrowset访问SQL Server中的csv文件。此示例假定您的表和csv文件中具有匹配的列名称。您可以根据需要调整文件名,目录和列名:
update users
set users.UserDescription = csv.UserDescription
from users
inner join openrowset('MSDASQL',
'Driver={Microsoft Access Text Driver (*.txt, *.csv)}',
'select * from C:\YourCSV.csv') as csv
on csv.UserID = users.UserID
答案 1 :(得分:0)
我建议采取以下步骤:
将CSV导入临时表格。
相关问题的详细信息: Import CSV file into SQL Server 。
使用临时表中的数据更新主表。
相关问题的详细信息: How do I UPDATE from a SELECT in SQL Server?
代码示例:
UPDATE users
SET users.UserDescription = #import.UserDescription
FROM users
INNER JOIN #import ON users.UserID = #import.UserID