【问题标题】:How to SELECT * into a SQL table incremntally by date?如何按日期将 * SELECT * 增量到 SQL 表中?
【发布时间】:2014-12-07 00:13:16
【问题描述】:

我有一个名为“tblProducts”的 SQL Server 表。

有时我会用这个简单的查询复制这个表来备份它:

SELECT *
INTO [test01].[dbo].[tblProducts_20141206]
FROM [test01].[dbo].[tblProducts]

每次进行备份时,日期都会包含在表名中。

我想创建一个每周运行一次此类查询的 SQL 作业。

是否有可能在存储过程中或声明一个变量来实现这一点,从而允许将备份表名称命名为 [tblProducts_todaysDate]?

谢谢。

【问题讨论】:

标签: sql-server backup increment sql-job


【解决方案1】:

如果您使用的是 SP,您可以执行以下操作:

 CREATE PROC sp_createATable
 @name        VARCHAR(20) AS
 CREATE TABLE @name
 ...
 do your insert

或者,如果您愿意,无需 SP:

 DECLARE @name varchar(20)
 SET @name = 'tblName' + SELECT CONVERT(VARCHAR(8), GETDATE(), 112) AS [YYYYMMDD]
 CREATE TABLE @name
 ...
 do your insert

【讨论】:

    【解决方案2】:

    您需要Dynamic SQL 来创建带有日期的表名。

    CREATE PROC usp_createtable( @tablename VARCHAR(20), 
                     @Dbname    VARCHAR(20), 
                     @SchemaName VARCHAR(20)) 
    AS 
      BEGIN 
        DECLARE @sql NVARCHAR(max) 
        SET @sql =' SELECT * INTO '+@Dbname+'.'+@SchemaName+'.'+@tablename+'CONVERT(VARCHAR(8), GETDATE(), 112) FROM '+@Dbname+'.'+@SchemaName+'.'+@tablename'' 
        EXEC sp_executesql 
          @sql 
      END
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-21
      • 2019-07-06
      • 1970-01-01
      • 2015-12-08
      • 2011-11-09
      • 2023-04-08
      • 2023-01-21
      • 2014-02-22
      相关资源
      最近更新 更多