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