我需要將我的本地數據庫的兩個表導出到遠程。 無論如何,我不能將它們導出爲INSERT INTO腳本,因爲我無法將它們放到遠程數據庫中並再次填充它們(因爲FK和完整性約束)。那麼,是否可以將表格作爲每行的UPDATE語句而不是INSERT INTO?我正在使用SQL Server 2008/2012SQL Server:是否可以將表腳本編寫爲UPDATE?
回答
CREATE TABLE mytable(
ExtractTypeNum INTEGER NOT NULL --PRIMARY KEY
,FileOrderNum VARCHAR(11)
,PrevFileOrderNum VARCHAR(11)
,NextFileOrderNum VARCHAR(11)
,rownum1 INTEGER
,Statusflag1 VARCHAR(9)
);
INSERT INTO mytable(ExtractTypeNum,FileOrderNum,PrevFileOrderNum,NextFileOrderNum,rownum1,Statusflag1)
VALUES (1,'2016-09-191',NULL,'2016-09-192',1,'IsInitial');
INSERT INTO mytable(ExtractTypeNum,FileOrderNum,PrevFileOrderNum,NextFileOrderNum,rownum1,Statusflag1)
VALUES (2,'2016-09-192','2016-09-191','2016-09-201',2,NULL);
INSERT INTO mytable(ExtractTypeNum,FileOrderNum,PrevFileOrderNum,NextFileOrderNum,rownum1,Statusflag1)
VALUES (3,'2016-09-201','2016-09-192','2016-09-211',3,NULL);
select 'Update Table Xyz Set Abc='+Convert(varchar(25),rownum1)+' ' as X,*
from myTable
在這裏你可以看到動態查詢這將幫助你解決你的問題 –
這看起來很有趣......我會有一個試驗,但我不知道我會做到這一點,因爲我以前從未見過類似的東西o_O 。謝謝,這真的很有趣! –
@Lory LoryThanks buddy –
有許多方法可以在數據庫之間同步數據。由於我的經驗,你可以通過兩個主要方式來完成:
- 寫動態查詢,生成數據腳本爲2個目標表:
使用MERGE語句(https://msdn.microsoft.com/en-us/library/bb510625.aspx從MSSQL 2K8支持): 選擇'select * into #tmp from dbtarget.tbla where 1 < 0;'作爲數據 Union 選擇'insert into #tmp values('+ convert(varchar,cola)+','+ convert(varchar,colb)+','+ convert(varchar,colc)+');'作爲來自dbsource.tbla的數據;
- 在數據庫源上運行上面的查詢以獲取輸出腳本數據。
- 將腳本數據應用到目標數據庫。
- 使用MERGE語句合併#tmp表和目標表之間的數據。
利用日誌傳送功能在同一結構和一個域網絡中的數據庫之間同步數據。 https://msdn.microsoft.com/en-us/library/ms190640(v=sql.110).aspx
謝謝你的回答。我從未使用MERGE語句。我試着閱讀一些文檔和你的例子,但我無法理解......所以,因爲我很着急,我會發布我的解決方案,即使它更復雜謝謝你,我想像... –
非常感謝Alfaiz艾哈邁德這是我最後的工作腳本:
select 'UPDATE ERGO.DBO.RESIDENZE SET CODISEDERESI='+CONVERT(varchar(50),CODISEDERESI)+
',DESCRIRESIDE='+isnull(CONVERT(varchar(100),''''+replace(DESCRIRESIDE,'''','''''')+''''),'''''')+
',INDIRIRESIDE='+isnull(CONVERT(varchar(100),''''+replace(INDIRIRESIDE,'''','''''')+''''),'''''')+
',NOMERESIDENZ='+isnull(CONVERT(varchar(50),''''+replace(NOMERESIDENZ,'''','''''')+''''),'''''')+
',VIARESIDENZA='+isnull(CONVERT(varchar(50),''''+replace(VIARESIDENZA,'''','''''')+''''),'''''')+
',CAPRESIDENZA='+isnull(CONVERT(varchar(50),''''+CAPRESIDENZA+''''),'''''')+
',CITTARESIDEN='+isnull(CONVERT(varchar(50),''''+replace(CITTARESIDEN,'''','''''')+''''),'''''')+
',EMAILRESIDEN='+isnull(CONVERT(varchar(100),''''+EMAILRESIDEN+''''),'''''')+
' WHERE CODICERESIDE='+CONVERT(varchar(50),CODICERESIDE)
from RESIDENZE
我不得不使用replace()
功能,因爲許多意大利人的名字有一個單引號在他們的名字的話,例如,我希望字符串D'AZEGLIO
成爲D''AZEGLIO
,以便通過SQL進行正確處理。最後,在執行查詢之前,我按CTRL+SHIFT+F
將輸出保存爲生成的腳本的sql文件。
- 1. 是否可以將視圖腳本編寫爲SQL Server中的表格?
- 2. 是否可以編寫Eclipse腳本?
- 3. 是否可以編寫MS SQL Server加載項?
- 4. 是否可以生成從SQL Server 2008到SQL Server 2008 Express的腳本
- 5. 是否可以反編譯NSIS腳本?
- 6. 是否可以爲maven + jenkins包裝過程編寫「本地」腳本/鉤子?
- 7. 是否可以編寫自修改的PowerShell腳本?
- 8. 是否可以編寫腳本來自動安裝Firefox插件?
- 9. 是否可以在Sql Server 2008中爲特定數量的行創建腳本?
- 10. 是否可以將以下lisp宏編寫爲函數?
- 11. 是否可以爲單個列表編寫「insert into」語句?
- 12. 是否可以將列默認設置爲SQL Server的NewId()?
- 13. sql server:是否可以將1,123轉換爲數字?
- 14. 是否可以將SQL Server CTE查詢轉換爲Postgres?
- 15. 是否可以編寫轉換爲C代碼的腳本語言?
- 16. 是否可以將變量傳遞給SQL/DDL腳本?
- 17. 是否可以將彙編代碼包含到php腳本中?
- 18. 是否可以將ArcGIS Server for WorkGroup連接到SQL Server?
- 19. 是否可以與SQL Server Developer版本並排安裝SQL Server Express版本?
- 20. 如何在SQL Server 2008中使用Table別名編寫UPDATE SQL?
- 21. 是否可以將SQL Reporting Service添加到SQL Server 2008 Express?
- 22. 是否可以將SQL Server Standard 2014備份還原到Azure SQL?
- 23. Python腳本將多個CSV文件寫入SQL Server表錯誤
- 24. 我可以編寫SQL腳本來更新SQL Server中的單個表的所有行,但分批嗎?
- 25. 將MySQL腳本轉換爲SQL Server
- 26. 將SQL Server腳本轉換爲PostgreSQL
- 27. 爲大表生成腳本SQL Server 2012
- 28. SQL Server腳本將xml屬性和文本值轉換爲表
- 29. 是否可以編寫一個腳本爲每個自動生成sql觸發器?
有任何數據示例? –
使用SELECT列INTO NewTable FROM oldTable。 – scsimon
是的!我應該如何發佈它們? –