2011-08-18 147 views
0

我有一個數據庫表中的某些醫療信息表。我爬行&每天解析它們並將其存儲在我本地數據庫的表中。同步2個不同數據庫的表 - MySQL

假設最初有1500條記錄,今天我的本地機器上又增加了100條記錄。

現在,我有一臺服務器,我需要推送這些記錄(因此數據庫是不同的)。我昨天覆制了數據庫。所以,服務器數據庫表現在有1500個條目。我如何將新的100個條目同步到實時應用程序?

請注意,我無法從本地機器刪除舊條目,否則它將被一次又一次地抓取。

回答

4

您可能想要使用'SELECT ... INTO OUTFILE'和'LOAD DATA INFILE INTO TABLE'命令。

編輯:精...

鑑於表結構:

CREATE TABLE my_local_table (
    id int NOT NULL auto_increment PRIMARY KEY, 
    data varchar(20), 
    created_on datetime); 

CREATE TABLE server_table (
    id int NOT NULL auto_increment PRIMARY KEY, 
    data varchar(20), 
    created_on datetime, 
    local_id int); 

和一些虛假的數據:

INSERT INTO my_local_table (data, created_on) VALUES ('test', now()), ('test2', now()); 

你可以使用下面的命令:

SELECT id, data, created_on 
    FROM my_local_table 
    WHERE created_on >= '2011-08-18' 
    INTO OUTFILE '/tmp/t.txt'; 

-- (and on the server) 
LOAD DATA LOCAL INFILE '/tmp/t.txt' 
    INTO TABLE server_table 
    (local_id, data, created_on); 

要自動化二,你可以使用一個bash腳本/批處理文件調用mysql,首先使用第一條語句連接到本地服務器,然後再使用第二條語句連接到遠程服務器。

mysql -e 'SELECT....'; 
mysql -h remote_server -e 'LOAD DATA...'; 
+0

可否請您在SQL查詢詳細更具體的,我怎麼能自動化這個過程? – dang

+0

這兩個數據庫都在同一個服務器中,並且它們在數據庫A ...中已經有tbl A1,tbl A2,tbl A3 ...而在數據庫B中tbl B1,tbl B2,tbl B3 – redcoder