每天从MySQL提取数据到本地MySQL数据库

时间:2012-10-25 22:39:20

标签: mysql

我正在本地做一些实验,需要来自我只有读取权限的生产MySQL数据库的一些数据。除了遗漏一列之外,模式几乎完全相同。我的目标是编写一个我每天都可以运行的脚本,它提取前一天的数据并将其导入我的本地表。

我最困惑的部分是如何下载数据。我已经看到像mysqldump这样的名字被抛出,但这似乎是一种复制整个数据库的方法。我很想避免使用php浏览,因为我没有经验。我一直在创建CSV,但我担心数据完整性(如果字段或\ n中有逗号)以及CSV的大小(每天有几十万行)。

2 个答案:

答案 0 :(得分:2)

没办法比mysqdump更快,如果你有最好的数十万行,那么简单的解决方案就是它,mysqldump不仅可以导出整个数据库,你只需要导出你想要的表。

http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html

mysqldump.exe -u root -p DATABASENAME TABLE1 TABLE2 > exported_tables.sql

这将从table1导出table2databasename

您还可以使用where参数来过滤结果:

 --where='where_condition', -w 'where_condition'

Dump only rows selected by the given WHERE condition. Quotes around the condition are mandatory if it contains spaces or other characters that are special to your command interpreter.

Examples:

--where="user='jimf'"
-w"userid>1"
-w"userid<1"

答案 1 :(得分:0)

两个数据库之间需要某种形式的dblink。请参阅此讨论并根据您是在本地还是从远程计算机访问您的生产数据库来选择合适的答案:

Oracle Database Link - MySQL Equivalent?

我的理解是您必须从单独的MySQL服务器访问生产服务器,而且您不需要精确的副本,并且您需要编写自定义查询。如果是这样,使用FEDERATED MySQL storage engine可能是您可能拥有的最佳选择。 使用FEDERATED表时,本地服务器上的查询会自动在远程(联合)表上执行。没有数据存储在本地表中。 Here