我有一个在Windows电脑上运行并填充了mysql
数据库,有没有工具可以将数据库传输到另一台计算机(运行Ubuntu)?
否则我只能编写一个脚本
将所有数据库数据转化成SQL
格式并在其他计算机上进行插入。只是试图省点时间 :)
谢谢大家。
你所说的工具已经存在:mysqldump
它可以将数据导出为SQL文件,然后可以将其复制到其他机器上并重新加载。
例如:
在源主机上执行:
mysqldump -u username -p databasename > dumpfile.sql
然后使用ftp/rsync/其他工具将文件移动到目标机器上,在那里创建一个空的数据库进行导入并运行:
mysql -u username -p databasename < dumpfile.sql
您还需要为已转移用户设置权限,因为它们不保存在数据库中。
或者,您可以将文件从mysql数据目录复制-但mysqldump是最简单/最可靠的方法。
值得注意的是,在原系统上表名可能不区分大小写,但在另一系统上可能会变成区分大小写。这取决于两端的配置-特别是文件系统的大小写敏感性(或非大小写敏感性)。
您可以使用单个命令将所有数据库一起导出,而不是逐个导出。 然后再进行导入。
例如:mysqldump -u username -p --all-databases > c:\alldbs.sql
PS- 最大的优势是您不会失去用户权限。
mysql -u 用户名 -p < alldbs.sql
- Pratyush在所有版本的MySQL之间,磁盘上的文件是100%兼容的。您只需要注意文件名的大小写,因为在Unix上它很重要,而在Windows上有时候也很重要。
并且请记住,在复制之前停止MySQL。在运行时可以复制MyISAM文件,但是复制InnoDB文件不是真正安全的,而Windows的MySQL默认使用InnoDB文件。
在使用mysqldump时,特别是在Windows上时,要注意字符集。我建议明确设置我的数据库使用的字符集,并使用--result-file=file而不是使用>操作符,以防止出现混乱。
来自MySQL文档: http://dev.mysql.com/doc/refman/5.0/en/copying-databases.html
(注:该文档介绍了如何复制数据库的内容)shell> mysqldump --quick db_name | gzip > db_name.gz
shell> mysqladmin create db_name
shell> gunzip < db_name.gz | mysql db_name
您可以使用任何GUI工具(如Windows上的Mysql Administrator(http://dev.mysql.com/downloads/gui-tools/)或Ubuntu上的aptitude install mysql-admin,以及phpmyadmin(http://www.phpmyadmin.net/home_page/index.php)在Windows上,aptitude install phpmyadmin在Ubuntu上)进行备份,然后在其他计算机上恢复。
mysqldump 应该正确地转储并保留数据库中任何内容的字符集。如果您不想遇到问题,建议移动到相同版本的 mysql。
由 mysqldump 生成的文件不是文本文件,尽管外观如此,请勿使用 notepad.exe 等编辑它,否则您将陷入麻烦。
第三方 GUI 工具(特别是 phpmyadmin)生成的转储通常不准确,并且不一定能够正确还原。
我经常使用这个单行代码的变体来在网络上复制数据库。
mysqldump --opt --compress --user=username database | mysql --user=username2 --password=p2 --host=hostB -D database -C database
我最初是在这里阅读到的:
http://www.igvita.com/2007/10/10/hands-on-mysql-backup-migration/
使用新的MySQL Workbench(GUI工具),您可以轻松地将数据库导出并导入到您想要迁移的数据库中。