最近應公司要求,在做資料庫的匯入匯出。經查詢每天的資料量在350w條左右。經過大量測試,感覺以下方法比較好
資料匯出:select into…outfile
基本語法:
select
[into outfile 'file_name'
[character set charset_name]
export_options
| into dumpfile 'file_name'
| into var_name [, var_name]]
該語句分為兩個部分。前半部分是乙個普通的select語句,通過這個select語句來查詢所需要的資料;後半部分是匯出資料的。其中,「目標檔案」引數指出將查詢的記錄匯出到哪個檔案中;「option」引數為可選引數選項,其可能的取值有:
例子:
select * into outfile 'e:/data.txt' fields terminated by ',' optionally enclosed by '"' lines terminated by '\n' from dl.datas
匯出結果:
資料匯入:load data infile
基本語法:
load data [low_priority] [local] infile 'file_name txt' [replace | ignore]
into table tbl_name
[fields
[terminated by't']
[optionally] enclosed by '']
[escaped by'\' ]]
[lines terminated by'n']
[ignore number lines]
[(col_name, )]
load data infile語句從乙個文字檔案中以很高的速度讀入乙個表中。使用這個命令之前,mysqld程序(服務)必須已經在執行。為了安全原因,當讀取位於伺服器上的文字檔案時,檔案必須處於資料庫目錄或可被所有人讀取。另外,為了對伺服器上檔案使用load data infile,在伺服器主機上你必須有file的許可權。
load data low_priority infile "/home/mark/data sql" into table orders;
4 分隔符
(1) fields關鍵字指定了檔案記段的分割格式,如果用到這個關鍵字,mysql剖析器希望看到至少有下面的乙個選項:
terminated by分隔符:意思是以什麼字元作為分隔符
enclosed by字段括起字元
escaped by轉義字元
terminated by描述欄位的分隔符,預設情況下是tab字元(\t)
enclosed by描述的是字段的括起字元。
escaped by描述的轉義字元。預設的是反斜槓(backslash:\ )
例子:
load data low_priority local infile "e:/data.txt" replace into table datas fields terminated by ',' enclosed by '"' escaped by '"' lines terminated by '\n';
mysql千萬級資料查詢
1.mysql的資料查詢,大小欄位要分開,這個還是有必要的,除非一點就是你查詢的都是索引內容而不是表內容,比如只查詢id等等 2.查詢速度和索引有很大關係也就是索引的大小直接影響你的查詢效果,但是查詢條件一定要建立索引,這點上注意的是索引字段不能太多,太多索引檔案就會很大那樣搜尋只能變慢 3.查詢指...
mysqldump匯入匯出百萬級資料解決方案
兩條語句 我有乙個叫做qizhi的資料庫,裡面有個students表大概100多萬資料,進入mysql後,先use 你選擇的資料庫 再輸入select from 你的表 into outfile 匯出的路徑 下圖 發現許可權不夠,那麼怎麼辦呢,這個時候退出mysql進到伺服器 執行 chmod r ...
Mysql 千萬資料快速匯入
最近碰到個專案,需要 千萬條資料入庫的問題,有原本的 類 csv 檔案匯入,統計了下 資料行大概有 1400w 行之多 二話不說,建表,直接 load load data local infile data data.csv into table pk book price character se...