时间:2023-03-06来源:系统城装机大师作者:佚名
我们平时想把数据从一个数据库中导入另外一个数据库中的时候
一般都是把所需的数据表进行转储sql文件 然后再运行sql文件 导入新的数据库中
这么做 数据少的时候一般不会出现什么错
但是如果数据量比较大 表比较多 就会出现缺少数据表 或者缺少数据
查询网上资料得知 有以下几种办法可以去尝试解决
先从数据库的配置文件下手
找到服务器上的MYSQL安装目录下的my.ini文件 然后去修改 记得重启
查找max_allowed_packet属性
max_allowed_packet=50M
或者再改大一点都行
从navicat修改数据库存储大小 和第一个有点相似 我2个都改了
命令:
//查看当前max_allowed_packet的大小
1 | show global variables like 'max_allowed_packet' ; |
//修改max_allowed_packet的大小
1 | set global max_allowed_packet=1024*1024*50; |
改过后查询以下大小有没有改变 改变了就成功了
导入的数据库和导出得数据库编码和结构不同
修改数据库的表字符集同步
更改严格模式,执行下列sql后再导入sql文件;
1 2 |
SET sql_mode = '' ; SET GLOBAL sql_mode = '' ; |
注意:
当用"SET sql_mode=''"时,mysql清除的默认的模式信息,
但是这也有一个问题,那就mysql不会作入侵检测,错误提示,
这就要求程序员在进行sql操作的时候更加小心。可以将上面sql加入到sql文件中先执行
在我们导入数据的时候 把 "在每个运行中运行多个查询" 给对掉 这么会慢一些 但是数据不会冲突 不会让数据进行减少
这个方法有点玄学 可信度有待调查 可以尝试尝试大家
在数据库中选择运行sql文件 没有在表中选择 运行sql文件 会准确度高一些
使用命令行导入导出
1. 导出整个数据库
1 | mysqldump -u 用户名 -p 数据库名 > 导出的文件名 |
1 | mysqldump -u dbuser -p dbname > dbname.sql |
2. 导出一个表
1 | mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名 |
1 | mysqldump -u dbuser -p dbname users> dbname_users.sql |
3. 导出一个数据库结构
1 2 |
mysqldump -u dbuser -p -d --add-drop-table dbname >d:/dbname_db.sql -d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table |
常用source 命令
进入mysql数据库控制台,如
1 2 |
mysql -u root -p mysql>use 数据库 |
然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
1 | mysql>source d:/dbname.sql |
导入数据到数据库
1 | mysql -uroot -D数据库名 |
导入数据到数据库中得某个表
1 | mysql -uroot -D数据库名 表名 |
导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径):
1、导出数据和表结构:
mysqldump -u 用户名 -p 参数(可选) 数据库名 >/home/sql/ 数据库名.sql
1 | mysqldump -u root -p --default-character-set=utf8 db_name>/home/sql/fileName.sql |
敲回车后会提示输入密码
2、只导出表结构
mysqldump -u用户名 -p密码 -d 数据库名 > 数据库名.sql
1 | /usr/ local /mysql/bin/ mysqldump -uroot -p -d abc > abc.sql |
注:/usr/local/mysql/bin/ —> mysql的data目录
1、首先建空数据库
1 | mysql> create database abc; |
2、导入数据库
方法一:
(1)选择数据库
1 | mysql>use abc; |
(2)设置数据库编码
1 | mysql> set names utf8; |
(3)导入数据(注意sql文件的路径)
1 | mysql>source /home/abc/abc.sql; |
方法二:
mysql -u用户名 -p 参数(可选) 数据库名 < 数据库名.sql
1 | mysql -uabc_f -p --default-character-set=utf8 abc < abc.sql |
没有用过 看到最新的navicat12带的功能
数据传输和数据同步 结构同步 打开界面看了一下 更加简单暴力
如果上面的都没有解决你的问题
可以尝试一种简单暴力的方法 如果要导入的数据不多
可以把sql文件直接打开然后到navicat里面直接 查询->新建查询 然后输入sql
看看到底哪个地方报错了 然后再对应去修改
到此这篇关于Navicat运行sql文件导入数据不全或导入失败的解决方案的文章就介绍到这了
2023-03-15
Navicat远程连接MongoDB最全实现方法以及报错解决2023-03-15
MongoDB的启动方法详细总结2023-03-11
详解分库分表后非分片键如何查询GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组,下面这篇文章主要给大家介绍了关于高版本Mysql使用group by分组报错的解决方案,文中通过实例代码介绍的非常详细,需要的朋友可以参考下...
2023-03-06