如果Csv文件中存在记录,如何使用C#执行大容量插入记录并更新现有行?

如果Csv文件中存在记录,如何使用C#执行大容量插入记录并更新现有行?,c#,sql-server-2008,csv,C#,Sql Server 2008,Csv,我正在尝试将.csv文件中的数千条记录插入SQL Server表中。我的.csv文件有100多列 我找到了许多关于SqlBulkCopy的文章,但在给定的示例中,最多有3或4列。因此,将.csv列映射到表列是我的一大难题。请问,当.csv有很多列时,有人能建议如何执行批量复制吗 我发现的文章: 这需要快速、轻量级,还是只获取数据库中的记录就可以了?您是否尝试过SQL server中的表值参数?表值参数是高级解决方案。您无需事先知道列名即可映射它们。如果源字段与目标列的顺序相同,则根本不需要映射。

我正在尝试将
.csv
文件中的数千条记录插入SQL Server表中。我的
.csv
文件有100多列

我找到了许多关于
SqlBulkCopy
的文章,但在给定的示例中,最多有3或4列。因此,将
.csv
列映射到表列是我的一大难题。请问,当
.csv
有很多列时,有人能建议如何执行批量复制吗

我发现的文章:


这需要快速、轻量级,还是只获取数据库中的记录就可以了?您是否尝试过SQL server中的表值参数?表值参数是高级解决方案。您无需事先知道列名即可映射它们。如果源字段与目标列的顺序相同,则根本不需要映射。如果列名相同,但顺序不同,则可以使用简单循环添加源名称和目标名称相同的映射。@AdilAnsari TVPs与此问题有何关系?如果你能写一个TVP,你可以写列名。此外,TVP不用于批量插入。它们产生简单的插入。更糟糕的是,他们必须一次发送所有数据,SqlBulkCopy可以批处理数据并尽可能快地发送。如果您有100个输入列和100个目标列,那么您希望如何在不进行任何列映射的情况下在正确的列中获得正确的数据?是的,添加100列映射有点乏味,但是在复制和粘贴的帮助下,这可能需要5分钟的时间,而且只需要做一次,因此我认为最可靠的解决方案是现在花一点时间,使用SQL批量复制正确地进行映射,并在将来获得回报。