Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

तालिका की जांच कैसे करें और फिर उसका नाम बदलें

आपके पास अधिक विकल्प हैं, एक है गतिशील प्रश्नों का उपयोग करके पूरी बात करना। आप SQLCMD पर भी एक नज़र डाल सकते हैं। मैं आपको डायनामिक SQL सॉल्यूशन का एक त्वरित मॉक-अप दिखाऊंगा।

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


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
;

/* Do BCP here */

कृपया ध्यान दें, कि 112 दिनांक प्रारूप (रूपांतरित देखें) में समय मान शामिल नहीं है, इसलिए आप स्क्रिप्ट को दिन में कई बार चलाने की अनुमति देने के लिए इसे बदलना चाहते हैं। उदाहरण के लिए आप select REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(32), GETDATE(), 120), ' ', ''), ':', ''), '-', '') (yyyyMMddHHmmss) इसके बजाय

हमेशा की तरह, सावधान रहें और गतिशील प्रश्नों के साथ काम करते समय अपने कोड की दोबारा जांच करें!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एसक्यूएल अद्यतन क्वेरी जो एक ही रिकॉर्ड के लिए इतिहास बनाता है

  2. क्या हम विशिष्ट तालिकाओं से हटाने से इनकार कर सकते हैं?

  3. SQL सर्वर में दशमलव स्थानों को छोटा करें (गोल नहीं)

  4. सक्रिय निर्देशिका समूह सदस्यता के लिए C# clr udf

  5. नवीनतम अद्यतन रिकॉर्ड प्राप्त करें