如何在 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 插入语句中获取行数?的主要内容,如果未能解决你的问题,请参考以下文章

Spring JDBC - 针对多个表的批量插入

如何将帆软中生成的图表与自己写的.net程序进行集成?

单元格格式为文本或前面有撇号,SAP Webi 中生成的 Excel 文件

sas中生成的表格中obs啥意思

将 Excel 转换为 SQL 插入语句

如何从 SQL *PLUS 中的批量插入中查找失败的插入语句