sql-server - 在插入语句中将表名、列名和值作为变量给出时,在 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;
推荐阅读
- jupyter-notebook - jupyter notebook 打不开笔记本
- google-chrome - 使用 Chrome / Chromium 无头模式时如何获取地址栏?
- python - 安装pyInstaller时如何修复错误
- c# - 如何获取声明的变量
- c++ - 存储持续时间与 C++ 中的位置
- css - SCSS 文件图像 @import 命令不起作用
- python - 尝试删除带有空格的符号(“-”),同时保留不带空格的符号(“-”)
- c# - 什么是图像的字节数组?
- javascript - jquery:为什么我的轮播滑块不再滑动了?
- machine-learning - Scikit learn 中是否有用于将子类数据集拆分为文件夹中的训练/测试集的库或工具