如何解決mysql導(dǎo)入sql文件慢、錯(cuò)等問(wèn)題
mysql導(dǎo)入sql文件慢、錯(cuò)等問(wèn)題
在服務(wù)開(kāi)發(fā)過(guò)程經(jīng)常有數(shù)據(jù)遷移、備份、sql導(dǎo)入需求,而在mysql導(dǎo)入sql文件過(guò)程中經(jīng)常出現(xiàn)慢、錯(cuò)等問(wèn)題,尤其是通過(guò)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)提交(開(kāi)啟手動(dòng)提交),目的是均是為了提高導(dǎo)入效率。
廢話少說(shuō),現(xiàn)在開(kāi)始吧。
1、命令行登錄數(shù)據(jù)庫(kù)
mysql -uroot -p
2、創(chuàng)建數(shù)據(jù)庫(kù)
如果數(shù)據(jù)庫(kù)還沒(méi)有創(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ù)庫(kù)
use demo;
5、手動(dòng)開(kāi)啟事務(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)表的最大容量問(wèn)題 max_allowed_packet
show variables like '%max_allowed_packet%'; select @@max_allowed_packet;
查詢:
手動(dòng)設(shè)置
set global max_allowed_packet = 102410141024;
重啟mysq才能生效
2) 表的大小寫(xiě)問(wèn)題
有些業(yè)務(wù)有大寫(xiě)和小寫(xiě)的表,設(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ū)分大小寫(xiě),默認(rèn)是這種設(shè)置
- lower_case_table_names = 1 不區(qū)分大小寫(xiě)
當(dāng)然,需要在配置文件中修改ini或者cnf 文件里添加。
3)導(dǎo)入數(shù)據(jù)時(shí)字符集設(shè)置問(wèn)題
報(bào)錯(cuò):mysql數(shù)據(jù)庫(kù)導(dǎo)入出錯(cuò)
ERROR:Unknown command ‘\’
核對(duì)此數(shù)據(jù)的字符集和腳本文件里的字符集是否一直,核對(duì)后你就會(huì)恍然大悟!
這樣核對(duì)!
除此之外、還有其他類似的設(shè)置問(wèn)題,當(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文件速度太慢的問(wèn)題
- 解決SQL文件導(dǎo)入MySQL數(shù)據(jù)庫(kù)1118錯(cuò)誤的問(wèn)題
- 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中count(*)、count(1)和count(字段名)的區(qū)別及說(shuō)明
這篇文章主要介紹了MySQL中count(*)、count(1)和count(字段名)的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03與MSSQL對(duì)比學(xué)習(xí)MYSQL的心得(七)--查詢
在這個(gè)《與MSSQL對(duì)比學(xué)習(xí)MYSQL的心得》系列里面,我一直都把MYSQL跟SQLSERVER進(jìn)行比較,相互進(jìn)行比較是學(xué)習(xí)一樣?xùn)|西比較好的方法2014-08-08Navicat連接MySQL出現(xiàn)2059錯(cuò)誤的解決方案
當(dāng)使用Navicat連接MySQL時(shí),如果出現(xiàn)錯(cuò)誤代碼2059,表示MySQL服務(wù)器不接受Navicat提供的加密插件,解決方法主要有兩種:一是修改MySQL用戶的認(rèn)證插件為mysql_native_password,二是升級(jí)Navicat到最新版本以支持MySQL8.0及其默認(rèn)的caching_sha2_password認(rèn)證插件2024-10-10Can’t open file:''[Table]mytable.MYI''
也許很多人遇到過(guò)類似Can’t open file: ‘[Table]mytable.MYI’ 這樣的錯(cuò)誤信息,卻不知道怎么解決他,下面我們做個(gè)介紹,2011-01-01node 多種方法連接mysql數(shù)據(jù)庫(kù)(最新推薦)
mysql是一個(gè)流行的第三方模塊,可以通過(guò)npm安裝,在Node.js 中,有多種方法可以連接 MySQL 數(shù)據(jù)庫(kù),本文通過(guò)實(shí)例代碼講解node 多種方法連接mysql數(shù)據(jù)庫(kù)的示例代碼,感興趣的朋友跟隨小編一起看看吧2023-07-07mysql中使用sphinx搜索子域名需注意的問(wèn)題
比如搜索jb51.net會(huì)把www.dbjr.com.cn、jb51.net、sc.jb51.net等都搜索出來(lái)2013-02-02MySQL定時(shí)備份方案(利用Linux crontab)
這篇文章主要給大家介紹了關(guān)于MySQL定時(shí)備份方案的相關(guān)資料,文中通過(guò)示例代碼以及圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07