Navicat运行sql文件导入数据不全或导入失败的解决方案


    目录
  • 前言:
  • 解决问题办法:
    • 第一:
    • 第二:
    • 第三:
    • 第四: 
    • 第五: 
    • 第六: 
    • 第七: 
  • 一、window环境
    • A. 导出.sql
    • B. 导入.sql
  • 二、linux环境
    • A. 导出.sql
    • B. 导入.sql
    • 第八: 
  • 总结

    前言:
    我们平时想把数据从一个数据库中导入另外一个数据库中的时候 
    一般都是把所需的数据表进行转储sql文件 然后再运行sql文件 导入新的数据库中
    这么做 数据少的时候一般不会出现什么错 
    但是如果数据量比较大 表比较多 就会出现缺少数据表 或者缺少数据
    解决问题办法:
    查询网上资料得知 有以下几种办法可以去尝试解决 
    第一:
    先从数据库的配置文件下手
    找到服务器上的MYSQL安装目录下的my.ini文件 然后去修改 记得重启
    
    查找max_allowed_packet属性
    max_allowed_packet=50M
    或者再改大一点都行
    第二:
    从navicat修改数据库存储大小 和第一个有点相似  我2个都改了
    命令:
    //查看当前max_allowed_packet的大小
    
show global variables like 'max_allowed_packet';

    //修改max_allowed_packet的大小
    
 set global max_allowed_packet=1024*1024*50;

    改过后查询以下大小有没有改变 改变了就成功了
    第三:
    导入的数据库和导出得数据库编码和结构不同
    
    修改数据库的表字符集同步
    第四: 
    更改严格模式,执行下列sql后再导入sql文件;
    
SET sql_mode = '';
SET GLOBAL sql_mode = '';

    
    注意:
    当用"SET sql_mode=''"时,mysql清除的默认的模式信息,
    但是这也有一个问题,那就mysql不会作入侵检测,错误提示,
    这就要求程序员在进行sql操作的时候更加小心。可以将上面sql加入到sql文件中先执行
    第五: 
    在我们导入数据的时候 把 "在每个运行中运行多个查询" 给对掉  这么会慢一些 但是数据不会冲突 不会让数据进行减少
    
    第六: 
    这个方法有点玄学 可信度有待调查 可以尝试尝试大家
    在数据库中选择运行sql文件 没有在表中选择 运行sql文件 会准确度高一些
    
    
    第七: 
    使用命令行导入导出
    一、window环境
    A. 导出.sql
    1. 导出整个数据库
    
mysqldump -u 用户名 -p 数据库名 > 导出的文件名

    
mysqldump -u dbuser -p dbname > dbname.sql

    2. 导出一个表
    
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名

    
mysqldump -u dbuser -p dbname users> dbname_users.sql

    3. 导出一个数据库结构
    
mysqldump -u dbuser -p -d --add-drop-table dbname >d:/dbname_db.sql
-d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table

    B. 导入.sql
    常用source 命令
    进入mysql数据库控制台,如
    
mysql -u root -p
mysql>use 数据库

    然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
    
mysql>source d:/dbname.sql

    导入数据到数据库
    
mysql -uroot -D数据库名

    导入数据到数据库中得某个表
    
mysql -uroot -D数据库名 表名

    二、linux环境 A. 导出.sql
    导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径):
    1、导出数据和表结构:
    mysqldump -u 用户名 -p 参数(可选) 数据库名 >/home/sql/ 数据库名.sql
    
mysqldump -u root -p --default-character-set=utf8 db_name>/home/sql/fileName.sql

    敲回车后会提示输入密码
    2、只导出表结构
    mysqldump -u用户名 -p密码 -d 数据库名 > 数据库名.sql
    
/usr/local/mysql/bin/ mysqldump -uroot -p -d abc > abc.sql

    注:/usr/local/mysql/bin/ —> mysql的data目录
    B. 导入.sql
    1、首先建空数据库
    
mysql>create database abc;

    2、导入数据库
    方法一:
    (1)选择数据库
    
mysql>use abc;

    (2)设置数据库编码
    
mysql>set names utf8;

    (3)导入数据(注意sql文件的路径)
    
mysql>source /home/abc/abc.sql;

    方法二:
    mysql -u用户名 -p 参数(可选) 数据库名 < 数据库名.sql
    
mysql -uabc_f -p--default-character-set=utf8 abc < abc.sql

    第八: 
    没有用过 看到最新的navicat12带的功能
    
    数据传输和数据同步 结构同步 打开界面看了一下 更加简单暴力
    如果上面的都没有解决你的问题
    可以尝试一种简单暴力的方法 如果要导入的数据不多
    可以把sql文件直接打开然后到navicat里面直接 查询->新建查询  然后输入sql
    看看到底哪个地方报错了 然后再对应去修改
    
    总结
    到此这篇关于Navicat运行sql文件导入数据不全或导入失败的解决方案的文章就介绍到这了,更多相关Navicat运行sql文件导入数据不全内容请搜索电脑手机教程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持电脑手机教程网!