關(guān)于MySQL的數(shù)據(jù)導(dǎo)入,教你幾招
本文轉(zhuǎn)載自微信公眾號(hào)「MySQL技術(shù)」,作者M(jìn)ySQL技術(shù)。轉(zhuǎn)載本文請(qǐng)聯(lián)系MySQL技術(shù)公眾號(hào)。
前言
我們知道,數(shù)據(jù)庫(kù)是存放數(shù)據(jù)的倉(cāng)庫(kù)。日常我們使用數(shù)據(jù)庫(kù)也是為了存儲(chǔ)數(shù)據(jù),和數(shù)據(jù)庫(kù)打交道總免不了要進(jìn)行數(shù)據(jù)導(dǎo)入工作。工作中也可能遇到各種不同的數(shù)據(jù)導(dǎo)入需求,本篇文章主要分享下數(shù)據(jù)導(dǎo)入相關(guān)的小技巧,希望你能學(xué)到幾招。
1.弄清需求是關(guān)鍵
在進(jìn)行數(shù)據(jù)導(dǎo)入前,我們首先要清楚想要做什么,要達(dá)到什么效果。最好也要清楚導(dǎo)入的數(shù)據(jù)量有多大,這樣對(duì)導(dǎo)入時(shí)間也有個(gè)評(píng)估。
其次,對(duì)要導(dǎo)入的文件內(nèi)容也要有大概了解,比如現(xiàn)在有一個(gè) sql 腳本需要執(zhí)行,那么你要先看下文件內(nèi)容,是否存在建表語(yǔ)句、若原表存在該怎么處理、數(shù)據(jù)沖突又要怎么處理等等,這些都要有個(gè)預(yù)估。
2.幾種數(shù)據(jù)導(dǎo)入場(chǎng)景
下面我們分場(chǎng)景來(lái)討論下如何進(jìn)行數(shù)據(jù)導(dǎo)入:
導(dǎo)入 sql 文件
這種場(chǎng)景還是比較常見(jiàn)的,sql 文件中一般是 insert 語(yǔ)句。執(zhí)行 sql 文件可以使用 mysql 命令行或 source 執(zhí)行,例如:mysql -uroot -pxxx testdb < /tmp/testdb.sql ,使用 Navicat 等圖形化工具也可以執(zhí)行 sql 文件,這里建議執(zhí)行 sql 文件最好是通過(guò)命令行來(lái)執(zhí)行,特別是比較大的 sql 文件,使用命令行執(zhí)行速度更快。
在導(dǎo)入 sql 文件前,要先進(jìn)入數(shù)據(jù)庫(kù)看下表信息,原表是否存在數(shù)據(jù),如果是增量導(dǎo)入的話,自增 ID 最好不要指定,有唯一索引的字段要額外注意,如果是清空原表進(jìn)行導(dǎo)入的話,最好事先進(jìn)行備份下。
導(dǎo)入 Excel 或 CSV 文件
有時(shí)候我們也需要將 Excel 表導(dǎo)入數(shù)據(jù)庫(kù)中,相對(duì)于 sql 文件,導(dǎo)入 Excel 文件顯得更加復(fù)雜些,因?yàn)?sql 文件中的 insert 語(yǔ)句是數(shù)據(jù)庫(kù)能直接識(shí)別的,而導(dǎo)入 Excel 文件則需要借助其他工具。
例如我們可以借助 Navicat 的導(dǎo)入向?qū)?lái)導(dǎo)入 Excel 文件,首先要在數(shù)據(jù)庫(kù)中創(chuàng)建對(duì)應(yīng)的表,字段順序及類型要與數(shù)據(jù)相匹配,為了導(dǎo)入順利,可以先不創(chuàng)建索引并允許字段為空。之后就可以借助導(dǎo)入向?qū)нx擇 Excel 文件進(jìn)行導(dǎo)入了,如果首行是標(biāo)題的話,記得忽略首行。
不過(guò),使用 Navicat 導(dǎo)入 Excel 文件只適用于數(shù)據(jù)量比較小的情況,如果數(shù)據(jù)量比較大且字段比較復(fù)雜的情況下,那就要進(jìn)行改造處理了,比如可以使用 LOAD DATA 或者借助程序腳本進(jìn)行處理后再導(dǎo)入。
總結(jié)
本篇文章簡(jiǎn)單介紹了數(shù)據(jù)導(dǎo)入的幾種場(chǎng)景及方法。作為工作中會(huì)遇到的場(chǎng)景,多學(xué)幾招還是有必要的。關(guān)于數(shù)據(jù)導(dǎo)入,最重要的還是能夠成功導(dǎo)入,無(wú)論用那種方法只要能完成需求即可。當(dāng)然進(jìn)行導(dǎo)入的前提是不影響現(xiàn)有業(yè)務(wù),特別是導(dǎo)入前進(jìn)行的刪除操作,一定要小心,我們導(dǎo)入數(shù)據(jù)是為了完成需求而不是制造新的麻煩。