2

我想使用 bash 脚本将数据库中特定表中的行插入到另一个数据库中。这两个数据库位于不同的服务器上。我怎样才能做到这一点?

我想要这样的东西:

INSERT INTO db1.table1(row1, row2) SELECT row1,row2 FROM db2.table2;

但是数据库位于不同的服务器上。

谢谢你。

4

4 回答 4

2

我建议使用 Percona Toolkit 中的pt-archiver工具。它可以将行从一个实例复制或移动到另一个实例。它高效且渐进地完成其工作。

例子:

$ pt-archiver --no-delete \
    --source h=host1,D=db1,t=table1 \
    --dest h=host2,D=db2,t=table2 \
    --columns col1,col2 \
    --where "1=1" --limit 1000 --commit-each
于 2013-01-16T13:59:05.957 回答
1

我认为您需要使用ssh执行远程命令并mysldump从远程数据库和 mysql 获取行以将行插入本地数据库。

ssh <remoteuser>@<remoteServer> mysqldump -t -u <remoteDbUser> -p<remoteDbPass> <remoteDbName> <remoteDbTable> -w<whereCondition> | mysql -u <localDbUser> -p<localDbPass> <localDbName>

请注意:

  1. -p 和密码之间没有空格。
  2. -t 选项避免了 CREATE TABLE sql 指令

有关 mysqldump 命令的更多信息,请使用手册页。

于 2013-01-16T13:59:50.877 回答
0

如果你想在同一台服务器上做两个 MySQL 数据库之间的操作,这很容易。看到这个线程:

http://forums.mysql.com/read.php?61,3063,4004#msg-4004

如果您想从不同服务器上的数据库传输数据,或者如果它是不同类型的数据库,则更加困难,您可能必须使用软件或构建一些软件。MySQL 没有 Oracle 拥有的数据库链接功能

于 2013-01-16T13:53:33.030 回答
0

看到这个: http ://dev.mysql.com/doc/refman/5.6/en/federated-create-connection.html 它就像mysql的数据库链接。

于 2013-01-16T14:12:47.027 回答