Navicat運行sql文件導入數(shù)據(jù)不全或?qū)胧〉慕鉀Q方案
前言:
我們平時想把數(shù)據(jù)從一個數(shù)據(jù)庫中導入另外一個數(shù)據(jù)庫中的時候
一般都是把所需的數(shù)據(jù)表進行轉(zhuǎn)儲sql文件 然后再運行sql文件 導入新的數(shù)據(jù)庫中
這么做 數(shù)據(jù)少的時候一般不會出現(xiàn)什么錯
但是如果數(shù)據(jù)量比較大 表比較多 就會出現(xiàn)缺少數(shù)據(jù)表 或者缺少數(shù)據(jù)
解決問題辦法:
查詢網(wǎng)上資料得知 有以下幾種辦法可以去嘗試解決
第一:
先從數(shù)據(jù)庫的配置文件下手
找到服務(wù)器上的MYSQL安裝目錄下的my.ini文件 然后去修改 記得重啟
查找max_allowed_packet屬性
max_allowed_packet=50M
或者再改大一點都行
第二:
從navicat修改數(shù)據(jù)庫存儲大小 和第一個有點相似 我2個都改了
命令:
//查看當前max_allowed_packet的大小
show global variables like 'max_allowed_packet';
//修改max_allowed_packet的大小
set global max_allowed_packet=1024*1024*50;
改過后查詢以下大小有沒有改變 改變了就成功了
第三:
導入的數(shù)據(jù)庫和導出得數(shù)據(jù)庫編碼和結(jié)構(gòu)不同
修改數(shù)據(jù)庫的表字符集同步
第四:
更改嚴格模式,執(zhí)行下列sql后再導入sql文件;
SET sql_mode = ''; SET GLOBAL sql_mode = '';
注意:
當用"SET sql_mode=''"時,mysql清除的默認的模式信息,
但是這也有一個問題,那就mysql不會作入侵檢測,錯誤提示,
這就要求程序員在進行sql操作的時候更加小心??梢詫⑸厦鎠ql加入到sql文件中先執(zhí)行
第五:
在我們導入數(shù)據(jù)的時候 把 "在每個運行中運行多個查詢" 給對掉 這么會慢一些 但是數(shù)據(jù)不會沖突 不會讓數(shù)據(jù)進行減少
第六:
這個方法有點玄學 可信度有待調(diào)查 可以嘗試嘗試大家
在數(shù)據(jù)庫中選擇運行sql文件 沒有在表中選擇 運行sql文件 會準確度高一些
第七:
使用命令行導入導出
一、window環(huán)境
A. 導出.sql
1. 導出整個數(shù)據(jù)庫
mysqldump -u 用戶名 -p 數(shù)據(jù)庫名 > 導出的文件名
mysqldump -u dbuser -p dbname > dbname.sql
2. 導出一個表
mysqldump -u 用戶名 -p 數(shù)據(jù)庫名 表名> 導出的文件名
mysqldump -u dbuser -p dbname users> dbname_users.sql
3. 導出一個數(shù)據(jù)庫結(jié)構(gòu)
mysqldump -u dbuser -p -d --add-drop-table dbname >d:/dbname_db.sql -d 沒有數(shù)據(jù) --add-drop-table 在每個create語句之前增加一個drop table
B. 導入.sql
常用source 命令
進入mysql數(shù)據(jù)庫控制臺,如
mysql -u root -p mysql>use 數(shù)據(jù)庫
然后使用source命令,后面參數(shù)為腳本文件(如這里用到的.sql)
mysql>source d:/dbname.sql
導入數(shù)據(jù)到數(shù)據(jù)庫
mysql -uroot -D數(shù)據(jù)庫名
導入數(shù)據(jù)到數(shù)據(jù)庫中得某個表
mysql -uroot -D數(shù)據(jù)庫名 表名
二、linux環(huán)境
A. 導出.sql
導出數(shù)據(jù)庫用mysqldump命令(注意mysql的安裝路徑,即此命令的路徑):
1、導出數(shù)據(jù)和表結(jié)構(gòu):
mysqldump -u 用戶名 -p 參數(shù)(可選) 數(shù)據(jù)庫名 >/home/sql/ 數(shù)據(jù)庫名.sql
mysqldump -u root -p --default-character-set=utf8 db_name>/home/sql/fileName.sql
敲回車后會提示輸入密碼
2、只導出表結(jié)構(gòu)
mysqldump -u用戶名 -p密碼 -d 數(shù)據(jù)庫名 > 數(shù)據(jù)庫名.sql
/usr/local/mysql/bin/ mysqldump -uroot -p -d abc > abc.sql
注:/usr/local/mysql/bin/ —> mysql的data目錄
B. 導入.sql
1、首先建空數(shù)據(jù)庫
mysql>create database abc;
2、導入數(shù)據(jù)庫
方法一:
(1)選擇數(shù)據(jù)庫
mysql>use abc;
(2)設(shè)置數(shù)據(jù)庫編碼
mysql>set names utf8;
(3)導入數(shù)據(jù)(注意sql文件的路徑)
mysql>source /home/abc/abc.sql;
方法二:
mysql -u用戶名 -p 參數(shù)(可選) 數(shù)據(jù)庫名 < 數(shù)據(jù)庫名.sql
mysql -uabc_f -p--default-character-set=utf8 abc < abc.sql
第八:
沒有用過 看到最新的navicat12帶的功能
數(shù)據(jù)傳輸和數(shù)據(jù)同步 結(jié)構(gòu)同步 打開界面看了一下 更加簡單暴力
如果上面的都沒有解決你的問題
可以嘗試一種簡單暴力的方法 如果要導入的數(shù)據(jù)不多
可以把sql文件直接打開然后到navicat里面直接 查詢->新建查詢 然后輸入sql
看看到底哪個地方報錯了 然后再對應(yīng)去修改
總結(jié)
到此這篇關(guān)于Navicat運行sql文件導入數(shù)據(jù)不全或?qū)胧〉慕鉀Q方案的文章就介紹到這了,更多相關(guān)Navicat運行sql文件導入數(shù)據(jù)不全內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SQL中where子句與having子句的區(qū)別小結(jié)
這篇文章主要給大家介紹了關(guān)于SQL中where子句與having子句的區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2018-12-12淺談關(guān)系型數(shù)據(jù)庫中的約束及應(yīng)用場景
這篇文章主要介紹了淺談關(guān)系型數(shù)據(jù)庫中的約束及應(yīng)用場景,關(guān)系型數(shù)據(jù)庫是一種廣泛應(yīng)用的數(shù)據(jù)庫類型,它的核心是基于關(guān)系模型的結(jié)構(gòu)化數(shù)據(jù)存儲和管理,在關(guān)系型數(shù)據(jù)庫中,約束是一種重要的概念,它可以幫助我們保證數(shù)據(jù)的完整性和一致性,需要的朋友可以參考下2023-07-07數(shù)據(jù)設(shè)計之權(quán)限的實現(xiàn)
這篇文章主要介紹了數(shù)據(jù)設(shè)計之權(quán)限的實現(xiàn),文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下2022-08-08