2013-06-24 94 views
0

是否有可能使用delphi zeoslib從數據庫讀取表並將其寫回到另一個服務器?德爾福ZEOSlib:從表中讀取並將其寫入另一個數據庫

我認爲它,讀表和回寫結果集,但我不知道如何,可能嗎?

我認爲以下: 我做了一個zquery:Select * from table1,與zconnection1我要插入的結果反饋到另一個數據庫,以zconnection2

我使用mysql數據庫。

+1

當然,這是可能的;這可能沒有多大幫助,但是除了「是否有可能」兩次之外,你什麼也沒問。如果你在這裏需要幫助,你需要具體說明你的問題,提供一些我們可以用來幫助你的信息,並且至少表現出一些努力去找出你自己。你有沒有至少從表格中讀取的代碼?你有關於我們可以使用的其他數據庫的任何信息嗎?請[編輯]你的問題,所以我們可以嘗試幫助你找到解決方案。謝謝。 –

+0

編輯瞭解更多詳情。 – Woodyka

+0

我的意思是,從db1讀取一張表,並將其寫入另一個具有相同表格的db。 – Woodyka

回答

0

我不知道MySQL(或Zeos)是否支持跨服務器查詢; MySQL documentation應回答該部分。 Zeos是否允許通過數據庫管理系統也是我無法回答的問題;使用開源產品的一個缺點是它們通常缺乏能夠告訴你這些事情的文檔。我知道肯定會工作(雖然這將是一個非常大的表有點慢)

一種方法是做一行一行:

var 
    i: Integer; 
begin 
    ZQuery1.SQL.Text := 'SELECT * FROM MyDataOnServer1'; 
    while not ZQuery1.Eof do 
    begin 
    ZTable1.Append; 
    for i := 0 to ZQuery1.FieldCount - 1 do 
     ZTable1.Fields[i].Value := ZQuery1.Fields[i].Value; 
    end; 
    ZTable1.Post; 
end; 

另外兩個possiible浮現在腦海中的替代品(兩者都沒有,我知道MySQL或的Zeos是否支持)是

  • 出口在Server1作爲備份表,並恢復到Server2
  • 如果支持SELECT...INTO,你可以選擇到一個臨時磁盤文件在服務器1上,然後執行INSERT FROM將臨時磁盤表導入服務器2
+0

不僅僅是Zeos--僅僅是一個橋樑傳遞查詢文本的過程 - 底層的RDBMS服務器(它們可以不同)也應該支持這一點。 –

+0

@ Arioch'The:當然,底層DBMS會影響到這一點,但通常數據訪問庫會限制功能,以便在DBMS系統之間提供靈活的支持。即使底層數據庫管理系統支持,我也不知道Zeos是否會支持這一點。舊的BDE用於提供它自己的SQL實現,以屏蔽平臺差異(但也限制了您可以在該SQL中執行的操作)。不過,我編輯了這一點,以澄清這一點,並對其進行一些修改。謝謝。 :-) –

+0

是的,BDE是怪獸。但是我記得LocalSQL只用於非SQL數據源或跨服務器查詢(將這些服務器降級爲非SQL行生成器)。例如,當您使用SQLink作爲Interbase時,您使用了LocalSQL中不存在的服務器功能,如ID生成器 –

相關問題