我想使用代码来实现,而不是使用"MySQL迁移工具包"这样的工具.我所知道的最简单的方法是打开一个到DB1的连接(使用MySQL连接器)并读取它的数据.打开到DB2的连接并将数据写入其中.有没有更好/最简单的方法?

推荐答案

首先,我将假设您不能只复制数据/目录,因为如果您正在使用现有的快照,/backup/restore可能就足够了(并测试您的备份/还原过程).

在这种情况下,如果两个表具有相同的 struct ,通常是最快的,具有讽刺意味的是,最简单的方法将是使用SELECT.INTO OUTFILE.在一端,将数据加载到文件中.在另一端.

http://dev.mysql.com/doc/refman/5.1/en/load-data.html和/ Select html获取最终细节.

对于无关紧要的表格,可以执行以下操作:

SELECT * FROM mytable INTO OUTFILE '/tmp/mytable.csv' 
  FIELDS TERMINATED BY ',' 
  OPTIONALLY ENCLOSED BY '"' 
  ESCAPED BY '\\\\' 
  LINES TERMINATED BY '\\n' ;

LOAD DATA INFILE '/tmp/mytable.csv' INTO TABLE mytable 
  FIELDS TERMINATED BY ',' 
  OPTIONALLY ENCLOSED BY '"' 
  ESCAPED BY '\\\\' 
  LINES TERMINATED BY '\\n' ;

我们还非常有效地使用了FIFO,以避免实际写入磁盘的开销,或者如果出于某种原因确实需要写入磁盘,则通过gzip来传递它.

也就是说.

mkfifo /tmp/myfifo
gzip -c /tmp/myfifo > /tmp/mytable.csv.gz &
... SEL

ECT... INTO OUTFILE '/tmp/myfifo' .....
wait

gunzip -c /tmp/mytable.csv.gz > /tmp/myfifo &
... LOAD DATA INFILE /tmp/myfifo .....
wait

基本上,只要将表数据定向到FIFO,就可以对其进行压缩、咀嚼或通过网络将其传输到您的内容中.

Database相关问答推荐

使用Postgres获取带有表架构的外键

将数据库/后端添加到 android 应用程序

复制 MySQL 数据库的最简单方法?

如何禁用 Django 查询缓存?

在 MySQL 中实现一对一关系时确定外键

为什么String or Binary data would be truncated不是更具描述性的错误?

将少量信息保存为 android 中的设置

SQLite3 不支持外键约束吗?

Android 在用户之间同步数据

使用 JSON 作为存储/传输格式的数据库

当另一个进程修改数据库时Hibernate二级缓存失效

在单个 postgres 查询中多次调用 `now()` 是否总是给出相同的结果?

您最喜欢在 django 中管理数据库迁移的解决方案是什么?

我应该在数据库模式中允许空值吗?

Fluent NHibernate 的类映射生成器

如何使用 django 判断 postgresql 数据库中是否存在某些内容?

ORM 还是Vietnam of Computer Science吗?

将内存数据库保存到磁盘

XML、CSV 或数据库格式的 ICD-9 代码列表

Windows phone 7 的本地 Sql 数据库支持