MySQL CSV 檔案匯入MySQL

2022-07-20 05:24:15 字數 2798 閱讀 8503

此問題是前幾天整理資料的時候碰到的,資料存在csv檔案中(200多萬記錄),通過python 往資料庫中匯入太慢了,後來使用mysql中自帶的命令load data infile, 30多秒就能夠完成二三百萬的資料量匯入。

load data infile命令允許你讀取文字檔案然後非常快速的插入資料庫。

匯入檔案之前,你需要準備以下的內容:

假定我們擁有乙個discounts的**,結構如下:

我們使用[create table statement][1]命令建立discounts**:

create table discounts (

id int not null auto_increment,

title varchar(255) not null,

expired_date date not null,

amount decimal(10 , 2 ) null,

primary key (id)

);

discounts.csv 檔案的首行作為列名稱,其他三行為資料。

以下的命令使得c:\tmp\discounts.csv的檔案存入discounts**。

load data infile 'c:/tmp/discounts.csv' 

into table discounts

fields terminated by ','

enclosed by '"'

lines terminated by '\n'

ignore 1 rows;

檔案中的資料閾由逗號分隔開,**中反映為field terminated by ',',而且資料由雙引號包圍,通過enclosed by '" 『標明

csv 中的換行標記由lines terminated by '\n'進行說明。

另外:檔案中的首行是標題並需要存入資料庫**中,因此通過ignore 1 rows進行忽略。

有時資料的格式並不滿足資料庫**中目標列的格式。簡單的情況下,你可以在load data infile中設定set選項 以轉換資料

假定 discount_2.csv 檔案中的過期時間列 是mm/dd/yyyy的格式。

當向 discounts **中匯入資料時,我們必須通過 str_to_date() function 轉換成mysql日期的格式

load data infile 'c:/tmp/discounts_2.csv'

into table discounts

fields terminated by ',' enclosed by '"'

lines terminated by '\n'

ignore 1 rows

(title,@expired_date,amount)

set expired_date = str_to_date(@expired_date, '%m/%d/%y');

使用命令load data infile從客戶端(本地電腦)向遠端mysql資料庫匯入資料是完全可行的。

當你使用load data infile中的local選項,客戶端程式讀取本地的檔案,然後將其傳送到mysql server。檔案將被上傳到伺服器端相應的臨時目錄內,比如windowsc:\windows\templinux/temp

此資料夾無法被mysql配置或占用。

我們看看下面的例子:

load data local infile  'c:/tmp/discounts.csv'

into table discounts

fields terminated by ','

enclosed by '"'

lines terminated by '\n'

ignore 1 rows;

唯一的差別在於命令中的local選項。如果你需要load乙個大的csv檔案,你會注意到local選項,它會比平時慢一些,因為更多時間浪費在資料傳輸上面。

當你使用 local 選項時,連線 mysql server的賬戶並不需要檔案許可權來匯入資料。

使用load data local匯入本地檔案到遠端mysql服務端,需要注意一些安全問題,你必須意識到這些問題以規避潛在的安全風險。

此文章**自:

MySql csv檔案匯入匯出

一 匯出到csv 本地匯出 通過mysql客戶端shell連線到伺服器,選擇使用的資料庫,輸入sql select from test info into outfile tmp test.csv fields terminated by 欄位間以,號分隔 optionally enclosed b...

mysql csv6 mysql匯入csv格式檔案

今天測試匯入csv格式檔案,雖然簡單但是如果不注意還是會出現錯誤,而且mysql在某些方面做的確實對新手不是很友好,記錄一下 建立乙個csv格式檔案 mysql 1 ycrdb more tmp loaddata.txt 1,abc,abc qq.com 1,abc,abc qq.com 1,abc...

mac 用datax從csv檔案匯入mysql

skipheader true writer password 123456 username root presql session set session sql mode ansi writemode insert setting 3 執行命令 位置是 home datax datax 出現的...