在SQL中遍历多个CSV

时间:2010-08-04 18:08:08

标签: sql-server csv

我有一个SQL Server 2008数据库。此数据库具有将更新多个记录的存储过程。这些记录的ID存储在通过逗号分隔的字符串传递的参数中。与这些id中的每一个相关联的属性值通过另外两个以逗号分隔的字符串传递。假设长度(以令牌表示)和值的顺序是正确的。例如,三个字符串可能如下所示:

Param1='1,2,3,4,5'
Param2='Bill,Jill,Phil,Will,Jack'
Param3='Smith,Li,Wong,Jos,Dee'

我的挑战是,我不确定实际解析这三个CSV并更新相应记录的最佳方法是什么。我可以访问名为ConvertCSVtoTable的过程,该过程将CSV转换为临时记录表。所以Param1会返回

1
2
3
4
5
调用程序后

。我想到了一个光标,但它似乎变得非常混乱。

有人能告诉我/告诉我,解决这个问题的最佳方法是什么?

2 个答案:

答案 0 :(得分:5)

我会考虑将输入重新编写到您的程序中。由于您运行的是SQL 2008,我的第一选择是使用table-valued parameter。我的第二选择是将参数作为XML传递。正如您所知,您当前的方法真的很头疼,而且更容易出错。

答案 1 :(得分:1)

您可以使用批量加载将值插入到tmp表之后,将它们PIVOT并插入到正确的值。