引言
我們把目光投向一切數據的基礎——數據庫。應用程序設計的那么復雜,最終不過是為了在數據庫內持久化數據。

在開發階段,如果需要導入一個SQL文件,里面存儲了SQL命令,包括建表,數據插入等等操作。如何在命令行中執行呢?
學習時間
假如有一個文件,我們從其他服務器中的 phpMyAdmin 導出工具中導出,需要遷移到新的數據庫內。有沒有類似下面這樣的指令呢?
database_name < file.sql
答案是肯定有的。在 MySQL中我們使用下面的方式:
mysql -u username -p database_name < file.sql
在服務器命令行上,運行 mysql 客戶端,并使用 username + password 進行身份驗證,然后指定 database_name,使用 <,指明將sql文件導入該數據庫內。
當然了,file.sql 是我們虛擬的文件名,如果填寫絕對路徑,是非常可靠的。
如果要保留原始數據庫的 routines 和 triggers,就加上 -R 和 --triggers 選項。
如果導入的sql文件內,沒有 CREATE DATABASE 選項,你需要先手動創建數據庫,然后導入。這可能會是導出sql文件的時候,你勾選了“--no-create-db”/ "-n" 這個選項。
深入學習
備份數據庫,我們使用頻次最高的,還是 mysqldump 工具,這個幾乎是運維的標配了。熟悉命令行操作的同學,可以這樣導出數據庫:
mysqldump db_name > backup-file.sql
然后只需要按照上一節的方法,把 backup-file.sql 文件導入新的數據庫就可以了。
再說一個導入的上下文。就是假如你已經進入到 mysql 的 command line了,也手動創建了數據庫,這時導入操作是這樣的:
mysql> use db_name;
mysql> source backup-file.sql;
首先選定數據庫,然后使用source指定導入sql文件。
如果你擔心導入過程會出錯,或者出現數據不一致的情況,那就使用事務進行控制:
mysql> SET autocommit=0 ; source the_sql_file.sql ; COMMIT ;
默認 MySQL 的 autocommit = true,是自動提交的。上面的方式,取消自動提交,改為手動整體提交。
寫在最后
通讀本文你可以掌握以下知識點,1)數據庫備份工具 mysqldump;2)bash環境,或命令行環境下,使用 < 重定向符導入sql文件到數據庫;3)手動控制導入sql的事務處理方式。
HAppy coding :-)
我是 @程序員小助手 ,持續分享編程知識,歡迎關注。