首頁 > 軟體

Navicat執行sql檔案匯入資料不全或匯入失敗的解決方案

2023-03-05 14:03:16

前言:

我們平時想把資料從一個資料庫中匯入另外一個資料庫中的時候 

一般都是把所需的資料表進行轉儲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檔案匯入資料不全內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com