1

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

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

4

2 回答 2

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

这将导出table1table2databasename.

您还可以使用 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"
于 2012-10-25T22:48:07.567 回答
0

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

Oracle Database Link - MySQL 等价物?

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

于 2012-10-25T22:46:31.420 回答