Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách kiểm tra bảng tồn tại và sau đó đổi tên nó

Bạn có nhiều lựa chọn hơn, một là thực hiện toàn bộ bằng cách sử dụng các truy vấn động. Bạn cũng có thể xem qua SQLCMD. Tôi sẽ chỉ cho bạn một bản mô phỏng nhanh về giải pháp SQL động.

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 */

Xin lưu ý rằng định dạng 112 ngày (xem chuyển đổi) không chứa giá trị thời gian, do đó bạn muốn thay đổi nó để cho phép tập lệnh chạy nhiều lần trong ngày. Ví dụ, bạn có thể chọn select REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(32), GETDATE(), 120), ' ', ''), ':', ''), '-', '') (yyyyMMddHHmmss) thay vào đó

Như mọi khi, hãy cẩn thận và kiểm tra kỹ mã của bạn khi bạn đang làm việc với các truy vấn động!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để hiển thị hình ảnh từ Máy chủ Sql với Microsoft Access?

  2. Tập bản ghi được đóng sau khi thực hiện thủ tục đã lưu trữ

  3. đếm số lượng khoảng trắng trong các giá trị trong máy chủ sql

  4. SQL chuyển đổi dữ liệu chuỗi ở định dạng thập lục phân thành văn bản chuỗi

  5. Làm cách nào để chia sẻ cơ sở dữ liệu với TFS?