我正在將一些表從一個SQL Server導入到另一個表,每天晚上,表應在目標上有一個DDMMYYYY
修正。我想不出在導入過程中更改名稱的方法,並且想到在導入後重命名它。我也卡在這裏,因爲我無法使SP_RENAME
以SP_RENAME 'TABLE_NAME' 'TABLE_NAME+DDMMYYYY'
的格式工作。將某些表重命名爲表名+ DDMMYYYY
回答
嗯,首先,它聽起來好像應該將這張表加載到一張桌子上,並使用另一列來存儲日期。不過,你可以使用動態SQL你想要的東西:
DECLARE @Date NVARCHAR(8), @Table NVARCHAR(500), @Query NVARCHAR(2000)
SELECT @Date = CONVERT(VARCHAR(8),GETDATE(),112)
SET @Table = 'TABLE_NAME'
SET @Query = 'EXEC sp_rename '''[email protected]+''','''[email protected][email protected]+''''
EXEC(@Query)
哦,看看this link閱讀SQL Server上有關動態SQL。
謝謝!這是我正在尋找的。這符合我的要求,我無需任何手動干預即可自動運行整個系統。 –
@nirajkumar:在這種情況下,更簡單的解決方案是:'EXEC sp_rename'MySchema.OldTableName','NewTableName20130722','OBJECT''? –
@BogdanSahlean ?,這將是一個更簡單的解決方案,對日期進行硬編碼,而這不是問什麼 – Lamak
執行在SQL Server Management Studio中(Ctrl+T
(文本輸出),F5
(執行))此腳本以產生另一T-SQL
腳本:生成
SET NOCOUNT ON;
GO
DECLARE @StartDate DATETIME,@EndDate DATETIME;
SELECT @StartDate='2013-07-10T00:00:00',
@EndDate='2013-07-23T00:00:00';
PRINT 'BEGIN TRANSACTION;'
SELECT 'EXEC sp_rename '
+''''
+QUOTENAME(s.name)+'.'+QUOTENAME(t.name)
+''','''
+QUOTENAME(t.name+STUFF(STUFF(CONVERT(VARCHAR(25),t.create_date,103),3,1,''),5,1,''))
+''', ''OBJECT'''
FROM sys.tables t
JOIN sys.schemas s ON t.schema_id=s.schema_id
WHERE t.create_date BETWEEN @StartDate AND @EndDate
--AND t.name LIKE '%pattern%'
PRINT 'ROLLBACK;'
PRINT '-- COMMIT;'
SET NOCOUNT OFF;
GO
實施例輸出/腳本(Message panel
):
BEGIN TRANSACTION;
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
EXEC sp_rename '[dbo].[NodesOrder]','[NodesOrder19072013]'
EXEC sp_rename '[dbo].[RateTable]','[RateTable19072013]'
EXEC sp_rename '[dbo].[A]','[A22072013]'
EXEC sp_rename '[dbo2].[A]','[A22072013]'
EXEC sp_rename '[dbo].[ConstraintTest]','[ConstraintTest17072013]'
ROLLBACK;
-- COMMIT;
現在,執行此腳本(Ctrl+C
, Ctrl+V
,F5
)。
- 1. 重命名錶名
- 2. 重命名錶]
- 3. 重命名錶
- 4. 重命名錶?
- 5. 重命名錶爲'NOW()+ old_table_name'
- 6. cakephp重命名acl表名
- 7. 防止uglifyjs重命名某些功能
- 8. Subsonic將名爲「Media」的表重命名爲「Medium」
- 9. 重命名錶列
- 10. Datastax重命名錶
- 11. 爲命名的SQL表約定在某些情況下
- 12. 如何將htdocs中的localhost/myfolder重命名爲某個域名
- 13. (重新)只命名某些列名基於索引,熊貓/ python
- 14. 將臨時表格重命名爲物理表格
- 15. 將jquery.js重命名爲其他名稱
- 16. 將* .pdf重命名爲convert.pdf
- 17. 將.nupkg重命名爲.zip
- 18. 將total.js重命名爲totaljs
- 19. 重命名/爲SimpleMembership表添加前綴
- 20. 重命名文件名在表
- 21. 如何在Django中重命名錶名?
- 22. SAS名稱與空白重命名錶
- 23. 重命名錶名,以大寫
- 24. 在SQLServer中重命名錶名
- 25. Laravel - 重命名錶的列名
- 26. 重命名列和表
- 27. 重命名錶的鬼影
- 28. 無法重命名mysql表
- 29. 在Directus CMS重命名錶
- 30. 重命名列表項
您是否考慮添加日期列並將所有數據保存在單個表中,而不是每天覆製表格?當數據分散在許多表中時,查詢變得困難。 – JSR