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

每天将数据从MySQL提取到本地MySQL数据库,mysql,Mysql,我正在本地做一些实验,这些实验需要来自生产MySQL数据库的一些数据,而我只有读取权限。除了省略了一列之外,这些模式几乎相同。我的目标是编写一个可以每天运行的脚本,提取前一天的数据并将其导入本地表 我最困惑的部分是如何下载数据。我见过像mysqldump这样的名字被随意使用,但这似乎是复制整个数据库的一种方式。我希望避免使用php,因为我没有使用php的经验。我一直在创建CSV,但我担心数据的完整性(如果字段或a\n中有逗号)以及CSV的大小(每天有几十万行) 两个数据库之间需要某种形式的dbl

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


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

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


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

没有任何方法比mysqldump更快,如果您有数十万行,那么最好且简单的解决方案就是它,mysqldump不仅可以导出整个数据库,还可以导出您想要的表

这将从
databasename
导出
table1
table2

还可以使用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"
--where='where\u条件',-w'where\u条件'
仅转储由给定WHERE条件选择的行。如果条件包含空格或命令解释器专用的其他字符,则条件周围的引号是必需的。
示例:
--其中=“user='jimf'”
-w“userid>1”

-w“userid您可以从文件加载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"