如何解決mysql導(dǎo)入sql文件慢、錯(cuò)等問題
mysql導(dǎo)入sql文件慢、錯(cuò)等問題
在服務(wù)開發(fā)過程經(jīng)常有數(shù)據(jù)遷移、備份、sql導(dǎo)入需求,而在mysql導(dǎo)入sql文件過程中經(jīng)常出現(xiàn)慢、錯(cuò)等問題,尤其是通過mysql客戶端(比如Nacivat)導(dǎo)入速度更慢。
今天我們選用一個(gè)新的導(dǎo)入方案,用MySQL自帶的source導(dǎo)入,進(jìn)行部分自定義操作,速度更快、統(tǒng)一提交;原理:減少網(wǎng)絡(luò)請(qǐng)求、關(guān)閉日志打印、關(guān)閉自動(dòng)提交(開啟手動(dòng)提交),目的是均是為了提高導(dǎo)入效率。
廢話少說,現(xiàn)在開始吧。
1、命令行登錄數(shù)據(jù)庫
mysql -uroot -p

2、創(chuàng)建數(shù)據(jù)庫
如果數(shù)據(jù)庫還沒有創(chuàng)建的話
create database demo;
3、設(shè)置參數(shù)
#臨時(shí)關(guān)閉二進(jìn)制日志 set sql_log_bin=off; #臨時(shí)關(guān)閉事務(wù)自動(dòng)提交 set autocommit=0;
4、使用某個(gè)數(shù)據(jù)庫
use demo;
5、手動(dòng)開啟事務(wù)
start transaction;
6、執(zhí)行source導(dǎo)入sql文件
- 1)linux環(huán)境
source .../test.sql
- 2)win環(huán)境
source D:\...\test.sql 或者 source D:/.../test.sql
7、手動(dòng)提交事務(wù)請(qǐng)求
commit;
8、還原最初的配置
#恢復(fù)二進(jìn)制日志 set sql_log_bin=on; #恢復(fù)事務(wù)自動(dòng)提交 set autocommit=1;
理想情況下數(shù)據(jù)一次性成功導(dǎo)入。
9、注意事項(xiàng)
1)表的最大容量問題 max_allowed_packet
show variables like '%max_allowed_packet%'; select @@max_allowed_packet;
查詢:

手動(dòng)設(shè)置
set global max_allowed_packet = 102410141024;
重啟mysq才能生效
2) 表的大小寫問題
有些業(yè)務(wù)有大寫和小寫的表,設(shè)置不區(qū)分,比如linux環(huán)境mysql默認(rèn)區(qū)分;
但是win環(huán)境默認(rèn)不區(qū)分;
因此必須保持一致
show variables like "%case%";
結(jié)果

原理
- lower_case_table_names = 0 區(qū)分大小寫,默認(rèn)是這種設(shè)置
- lower_case_table_names = 1 不區(qū)分大小寫
當(dāng)然,需要在配置文件中修改ini或者cnf 文件里添加。
3)導(dǎo)入數(shù)據(jù)時(shí)字符集設(shè)置問題
報(bào)錯(cuò):mysql數(shù)據(jù)庫導(dǎo)入出錯(cuò)
ERROR:Unknown command ‘\’
核對(duì)此數(shù)據(jù)的字符集和腳本文件里的字符集是否一直,核對(duì)后你就會(huì)恍然大悟!

這樣核對(duì)!
除此之外、還有其他類似的設(shè)置問題,當(dāng)然要舉一反三!
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 利用Sqoop實(shí)現(xiàn)MySQL數(shù)據(jù)導(dǎo)入Hive的全流程
- 使用mysqldump導(dǎo)出導(dǎo)入mysql表結(jié)構(gòu)或者數(shù)據(jù)
- MySQL解決數(shù)據(jù)導(dǎo)入導(dǎo)出含有外鍵的方案
- 如何解決mysql執(zhí)行導(dǎo)入sql文件速度太慢的問題
- 解決SQL文件導(dǎo)入MySQL數(shù)據(jù)庫1118錯(cuò)誤的問題
- mysql導(dǎo)入sql文件失敗的解決方案
- Navicat導(dǎo)入導(dǎo)出Mysql?結(jié)構(gòu)、數(shù)據(jù)、結(jié)構(gòu)+數(shù)據(jù)完整步驟
- MySQL導(dǎo)入.CSV數(shù)據(jù)中文亂碼的解決方式
- Mysql命令行導(dǎo)出SQL文件和導(dǎo)入文件詳細(xì)步驟
- MySQL數(shù)據(jù)導(dǎo)入導(dǎo)出的三種辦法總結(jié)
- mysql導(dǎo)入導(dǎo)出數(shù)據(jù)的示例詳解
- mysql sql大文件導(dǎo)入正確姿勢(shì)
相關(guān)文章
MySQL在Windows中net start mysql 啟動(dòng)MySQL服務(wù)報(bào)錯(cuò) 發(fā)生系統(tǒng)錯(cuò)誤解決方案
這篇文章主要介紹了MySQL在Windows中net start mysql 啟動(dòng)MySQL服務(wù)報(bào)錯(cuò) 發(fā)生系統(tǒng)錯(cuò)誤解決方案,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
mysql調(diào)優(yōu)的幾種方式小結(jié)
本文主要介紹了mysql調(diào)優(yōu)的幾種方式小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05
MySQL可直接使用的查詢表的列信息(實(shí)現(xiàn)方案)
本文介紹了如何使用SQL快速將下劃線命名的表字段轉(zhuǎn)換為駝峰命名格式,包括確定下劃線位置、找到第一個(gè)字符、截取并拼接字符串等步驟,通過使用LOCATE、CONCAT、UCASE和LOWER等函數(shù),可以實(shí)現(xiàn)高效的字段命名轉(zhuǎn)換,感興趣的朋友跟隨小編一起看看吧2025-01-01
Linux下指定mysql數(shù)據(jù)庫數(shù)據(jù)配置主主同步的實(shí)例
Linux下指定數(shù)據(jù)庫數(shù)據(jù)配置主主同步的實(shí)例,有需要的朋友可以參考下2013-01-01
MySQL 8 二進(jìn)制日志(binlog)自動(dòng)過期設(shè)置方法
MySQL的二進(jìn)制日志(binlog)是數(shù)據(jù)庫核心日志之一,記錄了所有數(shù)據(jù)修改操作(如 INSERT、UPDATE、DELETE),用于數(shù)據(jù)恢復(fù)、主從復(fù)制等場(chǎng)景,本文介紹MySQL 8 二進(jìn)制日志(binlog)自動(dòng)過期設(shè)置方法,感興趣的朋友一起看看吧2025-11-11
Mysql鎖內(nèi)部實(shí)現(xiàn)機(jī)制之C源碼解析
數(shù)據(jù)庫之所以要加鎖,因?yàn)閿?shù)據(jù)庫是一個(gè)多用戶使用的共享資源。當(dāng)多個(gè)用戶并發(fā)地存取數(shù)據(jù)時(shí),在數(shù)據(jù)庫中就會(huì)產(chǎn)生多個(gè)事務(wù)同時(shí)存取同一數(shù)據(jù)的情況。若對(duì)并發(fā)操作不加控制就可能會(huì)讀取和存儲(chǔ)不正確的數(shù)據(jù),破壞數(shù)據(jù)庫的一致性2022-08-08
解決MySQL數(shù)據(jù)庫意外崩潰導(dǎo)致表數(shù)據(jù)文件損壞無法啟動(dòng)的問題
這篇文章主要介紹了MySQL數(shù)據(jù)庫意外崩潰導(dǎo)致表數(shù)據(jù)文件損壞無法啟動(dòng)的問題及解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07

