分类网站 模板,代码生成器应用,那些网站可以做自媒体,1688精品货源网站SQLserver2019表1和表2对比出差异列#xff0c;将表1的插入表2 写成存储过程#xff0c;传的参为表名 两个表名一致#xff0c;表结构可能不一致#xff0c;可能一致#xff0c;如何快速对比两个表#xff0c;将需要的字段自动添加至需要的表中
字段大小是一致的吧
-- …SQLserver2019表1和表2对比出差异列将表1的插入表2 写成存储过程传的参为表名 两个表名一致表结构可能不一致可能一致如何快速对比两个表将需要的字段自动添加至需要的表中
字段大小是一致的吧
-- 连接到数据库
USE dbdemo;-- 创建临时表来存储差异列
CREATE TABLE #diff_columns (COLUMN_NAME NVARCHAR(100),DATA_TYPE NVARCHAR(100),CHARACTER_MAXIMUM_LENGTH INT
);-- 比较两个表的列将差异列插入到临时表中
INSERT INTO #diff_columns
SELECT COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH
FROM (-- 表1中的差异列SELECT COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTHFROM INFORMATION_SCHEMA.COLUMNSWHERE TABLE_NAME source_table1AND COLUMN_NAME NOT IN (SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME source_table2)UNION ALL-- 表2中的差异列SELECT COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTHFROM INFORMATION_SCHEMA.COLUMNSWHERE TABLE_NAME source_table2AND COLUMN_NAME NOT IN (SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME source_table1)
) AS diff_columns;-- 在表2中添加差异列
DECLARE alter_statements NVARCHAR(MAX) ;SELECT alter_statements alter_statements ALTER TABLE source_table2 ADD COLUMN_NAME DATA_TYPE CASE WHEN CHARACTER_MAXIMUM_LENGTH IS NOT NULL THEN ( CAST(CHARACTER_MAXIMUM_LENGTH AS NVARCHAR(10)) ) ELSE END ; CHAR(13) CHAR(10)
FROM #diff_columns;EXEC(alter_statements);---- 插入表1的数据到表2中
--INSERT INTO source_table2 (column1, column2, column3, ...) -- 列出表1中的所有列名
--SELECT column1, column2, column3, ... -- 列出表1中的所有列名
--FROM table1;-- 删除临时表
DROP TABLE #diff_columns;表1 结构 表2结构 执行后表2结构更改