Mysql 将select语句的结果复制到本地数据库表中
我想将远程数据库查询的内容复制到本地数据库表中。最好的方法是什么?目前,我正在尝试以下方法:Mysql 将select语句的结果复制到本地数据库表中,mysql,sql,Mysql,Sql,我想将远程数据库查询的内容复制到本地数据库表中。最好的方法是什么?目前,我正在尝试以下方法: mysql --host=example.com --user=syncdb --password=syncdb_pass db_name \ -e "SELECT user, MD5(user) FROM auth_user" \ > mysql -u root --host=127.0.0.1 --password="" localdb 命令的第一部分可以很好地抓取数据——我刚刚
mysql --host=example.com --user=syncdb --password=syncdb_pass db_name \
-e "SELECT user, MD5(user) FROM auth_user" \
> mysql -u root --host=127.0.0.1 --password="" localdb
命令的第一部分可以很好地抓取数据——我刚刚添加的第二部分是一种伪代码,用来显示我正在尝试做什么。我怎样才能做到这一点?另一种看法是:
INSERT INTO mylocaldb.table (SELECT user, MD5(user) FROM myremotedb.auth_user)
没有这种可能性 首先用你的手做一张新桌子
CREATE TABLE new_tbl SELECT user, MD5(user) FROM auth_user;
然后
这将转储新表并将其传输到远程服务器数据库
然后在原始服务器上删除新表,并在远程服务器上重命名它
如果您使用的是mysql 8,那么由于新的mysqldump和gtid,就不存在这种可能性 首先用你的手做一张新桌子
CREATE TABLE new_tbl SELECT user, MD5(user) FROM auth_user;
然后
这将转储新表并将其传输到远程服务器数据库
然后在原始服务器上删除新表,并在远程服务器上重命名它
在使用mysql 8的情况下,由于新的mysqldump和gtid,可用于此目的的另一个工具是execsql.py,它将从脚本文件中读取一组命令,其中脚本命令可以汇总远程服务器上的数据,并将这些数据复制到本地服务器。如果将数据复制到本地服务器后,您将对其执行更多操作,则执行这些步骤的命令可以包含在复制操作后的同一脚本中 假设初始连接到本地数据库,并且要运行的脚本名为get_remote_users.sql,则可以使用如下命令启动该过程:
execsql.py -u root -w get_remote_users.sql 127.0.0.1 localdb
命令行选项和参数的含义如中所述
然后,可以使用以下脚本连接到远程数据库,创建视图,将该视图复制到本地数据库,然后删除该视图
-- !x! connect to mysql(server=example.com, db=db_name, user=syncdb, need_pwd=True, password=syncdb_pass) as remote
-- !x! use remote
create or replace view userlist as
select user, MD5(user) as user_md5 from auth_user;
-- !x! copy userlist from remote to replacement remote_users in initial
drop view userlist;
-- !x! use initial
以-开头的行!x!是execsql的元命令
这将在本地数据库中创建或替换名为remote_users的表
如果这是一个经常发生的操作,并且可以在远程服务器上保留userlist视图,那么可以将此脚本缩减为仅包含和元命令的两行
免责声明:我编写了execsql.py。用于此目的的另一个工具是execsql.py,它将从脚本文件中读取一组命令,其中脚本命令可以汇总远程服务器上的数据,并将这些数据复制到本地服务器。如果将数据复制到本地服务器后,您将对其执行更多操作,则执行这些步骤的命令可以包含在复制操作后的同一脚本中 假设初始连接到本地数据库,并且要运行的脚本名为get_remote_users.sql,则可以使用如下命令启动该过程:
execsql.py -u root -w get_remote_users.sql 127.0.0.1 localdb
命令行选项和参数的含义如中所述
然后,可以使用以下脚本连接到远程数据库,创建视图,将该视图复制到本地数据库,然后删除该视图
-- !x! connect to mysql(server=example.com, db=db_name, user=syncdb, need_pwd=True, password=syncdb_pass) as remote
-- !x! use remote
create or replace view userlist as
select user, MD5(user) as user_md5 from auth_user;
-- !x! copy userlist from remote to replacement remote_users in initial
drop view userlist;
-- !x! use initial
以-开头的行!x!是execsql的元命令
这将在本地数据库中创建或替换名为remote_users的表
如果这是一个经常发生的操作,并且可以在远程服务器上保留userlist视图,那么可以将此脚本缩减为仅包含和元命令的两行
免责声明:我编写了execsql.py