You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用SSMS导入向导追加表时,如何实现ID自增?

高效解决SSMS导入Excel时的ID自增问题

方法一:临时调整目标表ID属性,导入后自动填充

  1. 先执行SQL移除目标表ID列的标识属性:
ALTER TABLE [你的目标表名] ALTER COLUMN [ID列名] INT NULL
  1. 打开SSMS导入向导,在映射界面取消ID列的映射,直接导入其他列数据
  2. 导入完成后,执行SQL自动为新增行生成自增ID:
DECLARE @MaxID INT = (SELECT ISNULL(MAX([ID列名]), 0) FROM [你的目标表名])
UPDATE [你的目标表名]
SET [ID列名] = @MaxID + ROW_NUMBER() OVER (ORDER BY (SELECT NULL))
WHERE [ID列名] IS NULL
  1. 最后恢复ID列的标识属性(如果原表有主键约束,需先删除再重建):
ALTER TABLE [你的目标表名] ALTER COLUMN [ID列名] INT NOT NULL
ALTER TABLE [你的目标表名] ADD CONSTRAINT PK_你的表名_ID PRIMARY KEY CLUSTERED ([ID列名])
ALTER TABLE [你的目标表名] ALTER COLUMN [ID列名] INT IDENTITY(1,1)

操作前建议备份表,避免数据异常。

方法二:用OPENROWSET直接导入并生成ID

跳过导入向导,直接通过SQL语句完成导入,同时自动计算ID:

DECLARE @MaxID INT = (SELECT ISNULL(MAX([ID列名]), 0) FROM [你的目标表名])

INSERT INTO [你的目标表名] ([ID列名], [列名1], [列名2], ...)
SELECT 
    @MaxID + ROW_NUMBER() OVER (ORDER BY (SELECT NULL)),
    [Excel列1], [Excel列2], ...
FROM OPENROWSET(
    'Microsoft.ACE.OLEDB.12.0',
    'Excel 12.0 Xml;HDR=YES;Database=C:\你的Excel文件路径.xlsx',
    'SELECT * FROM [Sheet1$]'
)

注意:服务器需安装ACE驱动,且SQL服务账号要有Excel文件的访问权限。

方法三:在导入向导中自定义查询生成ID

  1. 导入向导走到「Specify Table Copy or Query」步骤时,选择「Write a query to specify the data to transfer」
  2. 编写查询时直接生成自增ID:
DECLARE @MaxID INT = (SELECT ISNULL(MAX([ID列名]), 0) FROM [你的目标表名])

SELECT 
    @MaxID + ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS [ID列名],
    [Excel列1], [Excel列2], ...
FROM [Sheet1$]
  1. 后续步骤正常映射列,直接完成导入即可。

内容的提问来源于stack exchange,提问作者Jacob Lindsey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 10:14:54