在docker中的mysql容器內(nèi)執(zhí)行命令與執(zhí)行SQL文件方式
docker的mysql容器內(nèi)執(zhí)行命令與執(zhí)行SQL文件
通過 docker ps -a 查詢當(dāng)前運(yùn)行的容器,找到想執(zhí)行命令的容器名稱。
docker ps -a
若想執(zhí)行sql文件,則將sql文件放入當(dāng)前文件夾下后將項(xiàng)目?jī)?nèi)的 SQL 文件拷貝到 mysql 容器內(nèi)部的 root下。
sudo docker cp /root/enterprise.sql mysql:/root/
然后進(jìn)入 mysql 容器內(nèi)部。
docker exec -it mysql /bin/bash
進(jìn)入mysql容器內(nèi)部執(zhí)行以下命令后回車,輸入數(shù)據(jù)庫(kù)密碼進(jìn)入 mysql 數(shù)據(jù)庫(kù)
mysql -u root -p
如圖:

切換到對(duì)應(yīng)的數(shù)據(jù)庫(kù)下,例如數(shù)據(jù)庫(kù) zd,記得后面要加分號(hào)
use zd;
現(xiàn)在就可以對(duì)此數(shù)據(jù)庫(kù)執(zhí)行相關(guān)命令了,若想執(zhí)行sql文件,則運(yùn)行以下命令,_/root/enterprise.sql_為剛剛復(fù)制進(jìn)來的文件路徑,具體路徑請(qǐng)根據(jù)個(gè)人調(diào)整。
source /root/enterprise.sql
如果沒有出現(xiàn)報(bào)錯(cuò),則此sql文件執(zhí)行成功!
以下是mysql常用命令:
MySQL清空表數(shù)據(jù)三種方法
1.1 清空表數(shù)據(jù):truncate
sql命令:
#清空多張表、庫(kù)中所有表的數(shù)據(jù) truncate table table_name1,table_name2,...; #清空單張表的數(shù)據(jù) truncate table table_name;
注意:
- truncate會(huì)刪除表中的所有數(shù)據(jù)、釋放空間,但是保留表結(jié)構(gòu) 只能操作表,不能與where一起使用
- truncate刪除操作立即生效,原數(shù)據(jù)不放到rollback segment中,不能rollback,操作不觸發(fā)trigger
- truncate刪除數(shù)據(jù)后會(huì)釋放表空間、重置Identity(標(biāo)識(shí)列、自增字段),相當(dāng)于自增列會(huì)被置為初始值,又重新從1開始記錄、而非接著原來的id數(shù)
- truncate刪除數(shù)據(jù)后不寫服務(wù)器log,整體刪除速度快
1.2 刪除表:drop
sql命令:
drop table table_name; drop table if exists table_name;
注意:
- drop會(huì)刪除整個(gè)表,包括表結(jié)構(gòu)和數(shù)據(jù),釋放空間
- 立即執(zhí)行,執(zhí)行速度最快
- 不可回滾
1.3 刪除/清空表數(shù)據(jù):delete
sql命令:
#刪除部分?jǐn)?shù)據(jù) delete from tb_name where clause; #清空表,僅刪除數(shù)據(jù)、保留表結(jié)構(gòu),同時(shí)也不釋放表空間 delete from tb_name;
注意:
- 刪除表中數(shù)據(jù)而不刪除表結(jié)構(gòu),也不釋放空間
- delete可以刪除一行、多行、乃至整張表
- 每次刪除一行,都在事務(wù)日志中為所刪除的每行記錄一項(xiàng),可回滾
- 如果不加where條件,表示刪除表中所有數(shù)據(jù),僅刪除數(shù)據(jù)、保留表結(jié)構(gòu),同時(shí)也不釋放表空間
MySQL、Mariadb、PostgreSQL刪除表數(shù)據(jù)、清空表命令 都可用以上三種命令。
使用原則
使用原則總結(jié)如下:
- 當(dāng)你不需要該表時(shí)(刪除數(shù)據(jù)和結(jié)構(gòu)),用drop;
- 當(dāng)你仍要保留該表、僅刪除所有數(shù)據(jù)表內(nèi)容時(shí),用truncate;
- 當(dāng)你要?jiǎng)h除部分記錄、且希望能回滾的話,用delete;
在沒有備份的情況下,謹(jǐn)慎使用drop、truncate。
在實(shí)際應(yīng)用中,要根據(jù)具體需求和場(chǎng)景選擇合適的操作。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Docker容器訪問掛載文件權(quán)限問題小結(jié)
在使用docker-compose部署項(xiàng)目時(shí),因?yàn)镾ELinux策略導(dǎo)致容器無法訪問宿主機(jī)上掛載的文件,解決方案包括禁用SELinux、修改文件類型為svirt_sandbox_file_t或使用:Z選項(xiàng)掛載文件,本文介紹Docker容器訪問掛載文件權(quán)限問題,感興趣的朋友一起看看吧2025-02-02
docker發(fā)布sunnyNgrok實(shí)現(xiàn)內(nèi)外網(wǎng)穿透的方法(容器內(nèi)執(zhí)行命令)
這篇文章主要介紹了docker上發(fā)布 sunnyNgrok 實(shí)現(xiàn)內(nèi)外網(wǎng)穿透,容器內(nèi)執(zhí)行命令,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03
通過Docker創(chuàng)建CentOS容器的實(shí)現(xiàn)步驟
本文主要介紹了Docker創(chuàng)建CentOS容器,使用文內(nèi)的腳本可以快速創(chuàng)建CentOS 7.8虛擬系統(tǒng)集群,并通過SSH(Secure Shell)遠(yuǎn)程工具連接,感興趣的可以了解一下2021-11-11
Jenkins整合Docker自動(dòng)化部署的實(shí)現(xiàn)
本文主要介紹了Jenkins整合Docker自動(dòng)化部署的實(shí)現(xiàn),通過結(jié)合Jenkins的持續(xù)集成和Docker的容器化技術(shù),可以高效地構(gòu)建、測(cè)試和部署應(yīng)用程序,感興趣的可以了解一下2023-11-11
docker部署rustdesk遠(yuǎn)程控制服務(wù)器的實(shí)現(xiàn)
RustDesk是一款體驗(yàn)優(yōu)秀的遠(yuǎn)程控制軟件,本文主要介紹了docker部署rustdesk遠(yuǎn)程控制服務(wù)器的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了2024-05-05

