Navicat运行sql文件导入数据不全或导入失败的解决方案(navicat操作)燃爆了

随心笔谈4个月前发布 admin
204 00
🌐 经济型:买域名、轻量云服务器、用途:游戏 网站等 《腾讯云》特点:特价机便宜 适合初学者用 点我优惠购买
🚀 拓展型:买域名、轻量云服务器、用途:游戏 网站等 《阿里云》特点:中档服务器便宜 域名备案事多 点我优惠购买
🛡️ 稳定型:买域名、轻量云服务器、用途:游戏 网站等 《西部数码》 特点:比上两家略贵但是稳定性超好事也少 点我优惠购买

文章摘要

文章总结: 1. **导出和导入SQL文件**:通常将所需数据导出为SQL文件,导入到目标数据库。适用于数据量较小时,但大数据量时可能出错。 2. **解决方法**: - **检查配置文件**:修改`my.ini`中的`max_allowed_packet`,重启后检查参数变化。 - **编码和结构同步**:确保导出文件与目标数据库编码、结构一致,修改表字符集或使用`SET sql_mode='';`避免入侵检测。 - **选择表导入**:在导出单个表时,选择表名以避免数据冲突。 3. **使用工具**:尝试使用`mysqldump`命令导出数据、结构,或使用Navicat直接导入SQL文件。 4. **简单方法**:如果问题仍未解决,考虑直接在Navicat中运行SQL文件,逐步排查错误。 总结:通过检查配置文件、确保数据一致性、使用工具辅助,逐步解决导入问题,确保数据完整。



目录前言:解决问题办法:第一:第二:第三:第四: 第五: 第六: 第七: 一、window环境A. 导出.sqlB. 导入.sql二、linux环境A. 导出.sqlB. 导入.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文件 会准确度高一些

使用命令行导入导出

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

常用source 命令

进入mysql数据库控制台,如

mysql -u root -p
mysql>use 数据库

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

mysql>source d:/dbname.sql

导入数据到数据库

mysql -uroot -D数据库名

导入数据到数据库中得某个表

mysql -uroot -D数据库名 表名

导出数据库用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目录

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文件导入数据不全内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:Navicat Premium如何导入SQL文件的方法步骤Navicat快速导入和导出sql文件的方法使用navicat导入sql文件的方法步骤

© 版权声明

相关文章