同步不同数据库的2个表-MySQL

发布于 2024-11-30 10:40:59 字数 249 浏览 0 评论 0原文

我在数据库表中有一个包含某些医疗信息的表。我爬行&每天解析它们并将其存储在我的本地数据库的表中。

假设最初有 1500 条记录,今天我的本地计算机上又添加了 100 条记录。

现在,我有一个服务器,我需要在其中推送这些记录(因此数据库是不同的)。我昨天复制了数据库。因此,服务器数据库表现在有 1500 个条目。如何将新的 100 个条目同步到实时应用程序?

请注意,我无法从本地计算机中删除旧条目,否则它将被一次又一次地抓取。

I've a table with certain medical information in a database table. I crawl & parse them daily and store it in that table of my local database.

Suppose there were 1500 records initially, today 100 more records are added on my local machine.

Now, I've a server in which I need to push those records (so the database is different). I copied the database yesterday. So, the server database table has 1500 entries now. How can I sync the new 100 entries to the live application?

Please note that I cannot delete old entries from my local machine else it will be crawled again and again.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

故人如初 2024-12-07 10:40:59

您可能需要使用“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...';

You may want to use 'SELECT ... INTO OUTFILE' and 'LOAD DATA INFILE INTO TABLE' commands.

Edit: Elaboration...

Given the table structures:

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);

And some bogus data:

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

You would use the following commands:

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);

To automate the two, you can use a bash script / batch file calling mysql connecting first to the local server using the first statement, then to the remote server executing the second.

mysql -e 'SELECT....';
mysql -h remote_server -e 'LOAD DATA...';
梦途 2024-12-07 10:40:59

您想要在服务器和本地计算机之间设置复制 - 请参阅 参考文档了解详细信息。

You want to set up replication between the server and your local machine -- see the reference documentation for details.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文