2011-08-18 144 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