如何在查询中不断更新表的名称

时间:2017-06-27 08:24:11

标签: sql bcp

PFB链接,其中我到达了我被卡住的点

Previous question

在我之前的代码中,我得到了所有细节,希望得到一点

  

在该代码中假设我没有名称为x的表,所以我第一次这样做,当我第一次运行它时,它会在我第二次运行时创建一个带有x的表,它应该更新现有的带有x_getdate()的表名,但它正在创建新表。

所以我在想如果我改变代码并尝试创建新代码后我遵循的方法是什么,或者我应该坚持使用该代码并开始仅修改细节,如果我需要更新现有代码,我也是如此代码什么是我能做的最好的事情。我也在这里粘贴我当前的代码:

DECLARE @TableSchema sys.sysname = N'dbo';
DECLARE @TableName sys.sysname = N'x';
DECLARE @BackupTable sys.sysname = @TableName + '_' + CONVERT(VARCHAR  (32),    GETDATE(), 120);


DECLARE @SQL NVARCHAR(MAX) = N'

DECLARE @TableWithSchema NVARCHAR(256) = QUOTENAME(@TableSchema) + ''.'' +    QUOTENAME(@TableName);

IF (EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES 
         WHERE TABLE_SCHEMA = @TableSchema
         AND  TABLE_NAME = @TableName))
 BEGIN
 EXEC sp_rename @TableWithSchema, @BackupTable, ''OBJECT''
 END

 CREATE TABLE ' + QUOTENAME(@TableSchema) + '.' + QUOTENAME(@TableName) + '(
 /* Column definitions here*/
 );
 ';

  EXEC sp_executesql
  @stmt = @SQL
 , @params = N'@TableSchema sys.sysname, @TableName sys.sysname, @BackupTable sys.sysname'
 , @TableSchema = @TableSchema
 , @TableName = @TableName
, @BackupTable = @BackupTable
 ;

 DECLARE @CMD nvarchar(8000)
 SET @CMD='BCP db..'+@TableName+' IN file path -T -f -t,-c -E'
 EXEC MASTER..XP_CMDSHELL @CMD

0 个答案:

没有答案