如何在 SQL Server 中插入多行?

Posted

技术标签:

【中文标题】如何在 SQL Server 中插入多行?【英文标题】:How to insert multiple rows in SQL Server? 【发布时间】:2017-12-23 12:33:58 【问题描述】:

我有 17 列的表,我必须将特定文件中的行插入到该表中。

该文件中的行数约为 4000。

我已经接近ExecuteMany(qry) 方法来插入多行,但我的最终列数据为:

rows = [('abc','x',....),(....),..]  # 4k tuples in this list

现在我在最终查询中一次传递这些元组时遇到问题

谁能帮我把这个值传递给这个最终查询?

sql = "INSERT INTO [dbo].["+tablename+"] VALUES ".format(rows)
cursor.executemany(sql)

更新:SQL Server 2008 一次插入超过 1k 行时抛出错误

那么如何通过其他方式解决这个问题呢?

【问题讨论】:

为什么不直接查询文件而不是尝试用动态SQL构建数组? 请注意,sql server 将接受上面列出的最多 1000 个值,这将引发错误.. @JacobH 批量插入不是我的方法,因为我可以获得随机文件,我需要生成这些列和表格 w.r.t 文件名。所以我用了这个方法。 @Pரதீப் 是的,这是我的问题。那我该如何解决这个问题 要么分批执行 1000 行(希望你在文件中有唯一的 id),要么使用不那么笨重的方法:/ 【参考方案1】:

您应该使用XML数据类型MSSql Server 2008同时发送所有数据,XML节点可以根据需要与属性或节点值一起使用

【讨论】:

以上是关于如何在 SQL Server 中插入多行?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SQL Server CE 数据库中插入多行? [关闭]

在 Sql Server 中插入或更新多行

如何使用存储过程在 SQL 中插入多行?

SQL Server 插入多行并增加一个 int 列

如何在 SQL Server 的多行中查找连续的日期

在 SQL Server XML 列中,如何验证相同的值是不是存在于多行中