如何在 Excel 中生成的 SQL 插入语句中获取行数?
Posted
技术标签:
【中文标题】如何在 Excel 中生成的 SQL 插入语句中获取行数?【英文标题】:How do you get a rowcount into SQL insert statements generated in Excel? 【发布时间】:2011-08-23 18:32:37 【问题描述】:我正在 Excel 中生成 SQL 插入语句,但遇到了问题。这些语句适用的表的主键不是自动递增标识。我正在尝试找到一种方法,可以将 Excel 中的行数添加到它生成的插入语句中(从而有效地为我的行提供标识;或者至少让 SQL Server 在执行时停止抱怨)。
有没有人知道 Excel 中已经内置的任何东西可以让我完成这个任务?如果没有,是否有人有其他想法?提前致谢。
【问题讨论】:
列上是否指定了IDENTITY
?
如果不是IDENTITY
,那是什么?我的意思是,它似乎是一个唯一的整数,但还有其他限制吗?例如,您能否选择一个远离零(正或负)的值,该值产生冲突的可能性非常低?
【参考方案1】:
-
从表中选择以获取主键的最大值
将值设置为变量,如
rowCount
在循环 Excel 电子表格时,将计数加 1 并将该值用于插入语句
编辑:添加示例
DECLARE @MaxCount INT
SELECT @MaxCount = MAX(ID) FROM SomeTable
INSERT INTO (ID, ...) VALUES (@MaxCount + 1, ...)
【讨论】:
我很困惑(可能误解了你的答案)——这三个步骤都应该在 SQL Management Studio 中完成吗?此外,如果您尝试在 values 子句中进行选择,SQL Server 会抱怨,所以除非有一种方法可以在 values 子句中分配/递增,否则我不确定您在这里得到什么...... @KSwift87:您不会在 values 子句中进行选择;您将在插入之前将最大 id 放入变量中,并在 values 子句中使用该变量。以上是关于如何在 Excel 中生成的 SQL 插入语句中获取行数?的主要内容,如果未能解决你的问题,请参考以下文章