最近做的这个项目,连接的数据库是Mysql,然后公司设置的内部连接,也就是只能用公司的网络连接数据库,外面的网络连接不上。
于是我就想到把公司的数据库表格(包括表结构和内容)复制到我本地上来,利用Navicat。
项目组长复制的办法是:利用Navicat,同时连接本地数据库和公司数据库,然后在公司的数据库里面选中要复制的表格(大概有200个),直接Ctrl+C,然后到本地数据库界面Ctrl+V,过了一两分钟,公司这200个表全部复制到本地数据库了。
我也照着他这个办法来搞,但是蛋疼的事来了,复制进来的是单表(就是没有外键关联的表),有外键关联的表全部没有复制进来。然后我又尝试了把公司的表导出成.txt文件,然后往本地数据库写入,也是有外键的表没有导入,其他表都导入了。
我郁闷啊,不知道是不是跟数据库版本,或者是Navicat有没有关系?想换数据库,但是数据导入导出麻烦,外加万一重新安装数据库失败就更蛋疼的,各位高手来个完整的解决办法。
提示:数据库是Mysql,工具是Navicat For Mysql
没试过,试试下面两个方法?
一、工具-结构同步(有比对外键等选项),数据同步,数据传输几个功能可以尝试。
二、库A新建备份,库B还原备份
嗯,我用数据传输解决了这个问题。
你先在公司的数据库在你的电脑新建一个备份
然后在你电脑的数据库还原这个数据库
嗯,你说的这个思路是对的,还少一个正确的执行方法。
@Я│R、英俊: 都是傻瓜试操作,很简单的
对数据库转储SQL, 得到sql文件后, 在你本地建一个同名数据库后, 再用运行SQL文件
照着这样,也只能导入一部份数据,有外键关联的表仍然导不进来。
@Я│R、英俊: 这个情况只能打开sql文件, 把那些包含了作为外键的字段的表和表的数据剪切到前面去, 因为这种导出是按表名排序的
@dilex: 剪切出去?哪我表的数据就不能一次性完全导入了...。你说的按表名排序,我外键导不进是不是跟这个排序有关?是不是在哪修改一下排序方式,就可以一次性完全导入了?
@Я│R、英俊: Navicat For Mysql我的印象是没办法修改导出表的顺序的, 但导出的都是sql语句呢, 你可以修改其中的sql, 把一些作为外键的表和表的insert into语句, 放到文件最前面, 这样运行SQL文件的时候, 这些作为外键的表和其数据就会最先插入到数据库里, 那么后面那些对其有外键关联的表建成和它们数据在insert into的时候就不会报错了呢
@dilex: 刚才我打开看了下文件,数据太多了,差一千行就六万行了,这来回操作得累得不行不行的````我再看看有没有更好的办法,谢谢。