SQL Server:查询以将数据从具有不同结构的另一个表插入表中

cerede2000

我在两个不同的数据库中有两个表。

我的第一个表是较旧的版本,并且比第二个表具有更少的列。

我想将旧表的内容复制到新表中。

在这种情况下,每个数据库表中都有多个分布。

如何快速将数据从旧表复制到新表,而不必手动为每个表编写列名?

谢谢!

阿维·特纳(Avi Turner)

下面的代码应该可以完成工作。基本上,它的作用是:

1.从两个表中收集列名。
2.与列名相交,以过滤出仅存在于1个表中的列。
3.获取一个字符串,该字符串是用逗号分隔的列名称。
4.使用阶段3中的字符串创建插入命令。
5.从阶段4执行命令。

--BEGIN TRAN

DECLARE @oldName NVARCHAR(50) = 'OldTableName', @newName NVARCHAR(50) = 'newTableName'
DECLARE @oldDBName NVARCHAR(50) = '[OldDBName].[dbo].['+@oldName+']', @newDBName NVARCHAR(50) = '[newDBName].[dbo].['+@newName+']'

/*This table variable will have columns that exists in both table*/
DECLARE @tCommonColumns TABLE(
ColumnsName NVARCHAR(max) NOT NULL
);

INSERT INTO @tCommonColumns

SELECT column_name --,*
FROM information_schema.columns
WHERE table_name = @oldName
AND COLUMNPROPERTY(object_id(@oldName), column_name, 'IsIdentity') = 0 --this will make sure you ommit IDentity columns

INTERSECT

SELECT column_name --, *
FROM information_schema.columns
WHERE table_name = @newName
AND COLUMNPROPERTY(object_id(@newName), column_name,'IsIdentity') = 0--this will make sure you ommit IDentity columns

--SELECT * FROM @tCommonColumns

/*Get the columns as a comma seperated string */
DECLARE @columns NVARCHAR(max)
SELECT DISTINCT 
                @columns  = STUFF((SELECT ', ' + cols.ColumnsName
                                    FROM @tCommonColumns cols

                                      FOR XML Path('')),1,1,'')
FROM @tCommonColumns
PRINT @columns 
/*Create tyhe insert command*/
DECLARE @InserCmd NVARCHAR(max)
SET @InserCmd = 
'INSERT INTO '+@newDBName +' ('+@columns +')
SELECT '+@columns +' FROM '+@oldDBName

PRINT @InserCmd
/*Execute the command*/
EXECUTE sp_executesql @InserCmd
--ROLLBACK

请注意,如果您的FOREIGN KEY约束在旧表中已实现,而在新表中未实现,则此脚本可能会失败

编辑:
查询已更新为省略Identity列。

编辑2:
查询更新的支持不同的数据库的表(请确保您设置的@oldName@newName@oldDBName@newDBName变量匹配实际凭据)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用SQL将具有不同选择条件的多列插入到另一个表中

来自分类Dev

SQL将数据从另一个表插入到表中

来自分类Dev

将另一个层次结构插入到sql表中

来自分类Dev

SQL Server:查询以从另一个表中获取表数据(计数)作为 VIEW

来自分类Dev

SQL Server:将丢失的数据从一个表插入/更新到另一个表

来自分类Dev

将一个表中的值插入到 SQL Server 中的另一个表中

来自分类Dev

SQL查询以获取所有具有由FK链接的数据的行在另一个表中

来自分类Dev

sql查询将一个数据表与另一个数据不同

来自分类Dev

从 SQL Server 中的另一个数据库表插入选择

来自分类Dev

将记录从一个表插入到另一个表,而不违反SQL Server数据库中的任何约束

来自分类Dev

当一个表具有大量数据而另一个表具有少量数据时,在SQL Server中联接两个表

来自分类Dev

将数据行从C#中的另一个sql表插入到sql表中

来自分类Dev

如何将 CTE 查询与 SQL Server 2008 中的另一个表连接

来自分类Dev

视图中具有静态值的另一个表中的SQL Server列

来自分类Dev

SQL Server 2008查询将表数据从一个移动到另一个

来自分类Dev

将选择查询的转置插入另一个表的 SQL 查询

来自分类Dev

SQL将数据从另一个表插入表

来自分类Dev

使用PL / SQL将数据从表插入到另一个表

来自分类Dev

SQL将表中的行插入到表中,该表必须具有2个不同的列,但也必须具有一个非不同的列

来自分类Dev

SQL-根据另一个表条目将新行插入到现有表中

来自分类Dev

SQL Server将分隔的值批量插入单列中,拆分为几列,然后插入另一个表

来自分类Dev

SQL Server:插入到表中,从另一个表中选择

来自分类Dev

从一个表到另一个表的SQL Server数据库批量插入

来自分类Dev

从SQL Server的另一个表插入数据时,按多列划分

来自分类Dev

SQL查询另一个表中的值

来自分类Dev

MS SQL:插入另一个表中的值和常量数据中的值

来自分类Dev

MS SQL:插入另一个表中的值和常量数据中的值

来自分类Dev

在一个表中查找不在另一个表中的行-SQL Server查询

来自分类Dev

SQL Server触发器信息插入到另一个表中

Related 相关文章

  1. 1

    如何使用SQL将具有不同选择条件的多列插入到另一个表中

  2. 2

    SQL将数据从另一个表插入到表中

  3. 3

    将另一个层次结构插入到sql表中

  4. 4

    SQL Server:查询以从另一个表中获取表数据(计数)作为 VIEW

  5. 5

    SQL Server:将丢失的数据从一个表插入/更新到另一个表

  6. 6

    将一个表中的值插入到 SQL Server 中的另一个表中

  7. 7

    SQL查询以获取所有具有由FK链接的数据的行在另一个表中

  8. 8

    sql查询将一个数据表与另一个数据不同

  9. 9

    从 SQL Server 中的另一个数据库表插入选择

  10. 10

    将记录从一个表插入到另一个表,而不违反SQL Server数据库中的任何约束

  11. 11

    当一个表具有大量数据而另一个表具有少量数据时,在SQL Server中联接两个表

  12. 12

    将数据行从C#中的另一个sql表插入到sql表中

  13. 13

    如何将 CTE 查询与 SQL Server 2008 中的另一个表连接

  14. 14

    视图中具有静态值的另一个表中的SQL Server列

  15. 15

    SQL Server 2008查询将表数据从一个移动到另一个

  16. 16

    将选择查询的转置插入另一个表的 SQL 查询

  17. 17

    SQL将数据从另一个表插入表

  18. 18

    使用PL / SQL将数据从表插入到另一个表

  19. 19

    SQL将表中的行插入到表中,该表必须具有2个不同的列,但也必须具有一个非不同的列

  20. 20

    SQL-根据另一个表条目将新行插入到现有表中

  21. 21

    SQL Server将分隔的值批量插入单列中,拆分为几列,然后插入另一个表

  22. 22

    SQL Server:插入到表中,从另一个表中选择

  23. 23

    从一个表到另一个表的SQL Server数据库批量插入

  24. 24

    从SQL Server的另一个表插入数据时,按多列划分

  25. 25

    SQL查询另一个表中的值

  26. 26

    MS SQL:插入另一个表中的值和常量数据中的值

  27. 27

    MS SQL:插入另一个表中的值和常量数据中的值

  28. 28

    在一个表中查找不在另一个表中的行-SQL Server查询

  29. 29

    SQL Server触发器信息插入到另一个表中

热门标签

归档