在插入语句中将表名,列名和值指定为变量时,将数据插入SQL Server表中?

问题描述

我正在尝试创建一个通用脚本,以将数据从一个数据库复制到另一个数据库,而我已经编写了此脚本。

USE TargetDatabase;

DECLARE @SourceDatabase NVARCHAR(100);
DECLARE @TargetDatabase NVARCHAR(100);

DECLARE @SourceTable NVARCHAR(100);
DECLARE @TargetTable NVARCHAR(100);

DECLARE @var NVARCHAR(MAX);

SET @SourceDatabase = 'SourceDB'
SET @TargetDatabase = 'TargetDB'

SET @SourceTable = 'SourceTable'
SET @TargetTable = 'TargetTable'

set @var = (SELECT STRING_AGG (QUOTENAME(COLUMN_NAME),',') from 
@TargetDatabase.INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME = @TargetTable);

正如您在下面看到的那样,在 INSERT 语句中,我将表名,列名和值作为变量。这是我遇到的问题,因此基本上我不知道如何评估这些变量 @ var,@ SourceTable,@ TargetTable

INSERT INTO @TargetTable (SELECT @Var)
SELECT * FROM @SourceTable

我被困在这里,我不知道如何解决这个问题。谁能解释我如何解决这个问题?

解决方法

还有许多其他方式可以运行动态查询,但这是您可以根据需要运行查询的一种方式。

declare @table nvarchar(50)
declare @query nvarchar(500)

set @table = 'Test'

set @query='insert into [' +@table+ '] Select * from [' +@table+ ']';

Exec sp_executesql @query;

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...