對於大批量資料的遷移工作,採用資料庫自身的高速批量處理能力可以較快的實現
匯出select * from tablename into outfile 'c:/programdata/mysql/mysql server 5.7/uploads/檔名' fields terminated by ',' lines terminated by '\r\n'
當然也可以匯入自定義目錄,但是需要修改自定義目錄的讀取許可權
匯入load data [local] infile '檔案路徑(可以自定義)' into table tablename fields terminated by ',' lines terminated by '\r\n'
基本語法:
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
的許可權。
1 low_priority
,那麼mysql將會等到沒有其他人讀這個表的時候,才把插入資料。可以使用如下的命令:
load data low_priority infile "/home/mark/data sql" into table orders;
2 如果指定
local
local
沒指定,檔案必須位於伺服器上。
3 replace
和ignore
replace
,新行將代替有相同的唯一鍵值的現有行。如果你指定
ignore
,跳過有唯一鍵的現有行的重複行的輸入。如果你不指定任何乙個選項,當找到重複鍵時,出現乙個錯誤,並且文字檔案的餘下部分被忽略。例如:
load data low_priority infile "/home/mark/data sql" replace into table orders;
4 分隔符
(1) fields關鍵字指定了檔案記段的分割格式,如果用到這個關鍵字,mysql剖析器希望看到至少有下面的乙個選項:
terminated by
分隔符:意思是以什麼字元作為分隔符
enclosed by字段括起字元
escaped by轉義字元
terminated by
描述欄位的分隔符,預設情況下是tab字元(\t)
enclosed by描述的是字段的括起字元。
escaped by描述的轉義字元。預設的是反斜槓(backslash:\ )
例如:load data infile "/home/mark/orders txt" replace into table orders fields terminated by',' enclosed by '"';
(2)lines 關鍵字指定了每條記錄的分隔符預設為
'\n'
即為換行符
如果兩個欄位都指定了那
fields
必須在lines
之前。如果不指定
fields
關鍵字預設值與如果你這樣寫的相同:
fields terminated by'\t' enclosed by 』 '' 『 escaped by'\\'
如果你不指定乙個
lines
子句,預設值與如果你這樣寫的相同:
lines terminated by'\n'
例如:load data infile "/jiaoben/load.txt" replace into table test fields terminated by ',' lines terminated by '/n';
5 load data infile
可以按指定的列把檔案匯入到資料庫中。 當我們要把資料的一部分內容匯入的時候,,需要加入一些欄目(列/字段/field)到mysql資料庫中,以適應一些額外的需要。比方說,我們要從access資料庫公升級到mysql資料庫的時候
下面的例子顯示了如何向指定的欄目(field)中匯入資料:
load data infile "/home/order txt" into table orders(order_number, order_date, customer_id);
6 當在伺服器主機上尋找檔案時,伺服器使用下列規則:(1
)如果給出乙個絕對路徑名,伺服器使用該路徑名。(2
)如果給出乙個有乙個或多個前置部件的相對路徑名,伺服器相對伺服器的資料目錄搜尋檔案。(3
)如果給出乙個沒有前置部件的乙個檔名,伺服器在當前資料庫的資料庫目錄尋找檔案。
例如:/myfile txt」
給出的檔案是從伺服器的資料目錄讀取,而作為
「myfile txt」
給出的乙個檔案是從當前資料庫的資料庫目錄下讀取。
注意:欄位中的空值用
\n表示
load data infile 一直被認為是mysql很強大的乙個資料匯入工具,因為他速度非常的快。
不過有幾個問題一定要注意
1、編碼。
2、靈活匯入匯出。
乙個例子:
先建立乙個表:
create table salary(
id_p int,
salary int
);
然後在d盤根目錄下建立了乙個data.txt文字檔案。
data.txt的內容:
1,10000
2,8000
3,12000
4,9000
5,12000
6,10000
7,13000
然後執行:
load data local infile "d:/data.txt" into table salary fields terminated by ',';
執行之後data.txt中的資料就全部插入到salary表中了。
注意:
terminated by ','制定了data.txt中的資料字段間的分割符為','。
MySQL儲存過程批量處理資料
本文主要講述了mysql實現查詢資料並根據條件更新到另一張表的方法 create definer root procedure tasktaxnumber begin routine body goes here.需要定義接收游標資料的變數 declare done boolean default ...
JDBC的批量處理
jdbc的批量處理 批量處理出現的原因 statement的execute 等方法一次只能執行一條sql語句,如果有多條sql語句要執行的話,可以使用addbatch 方法將要執行的sql語句加進來,然後執行executebatch方法,就可以在呼叫中執行多條語句,提高效率 批量處理的 public...
批量處理 批量開啟網頁
由於工作中有很多重複性的部分,比如說要更改好多頁面,這樣就需要從excel中拷貝再貼上到位址列中,操作比較繁瑣,而bat檔案可以批量處理,由此我們可以直接將位址做成.bat檔案,只要開啟檔案就可以開啟好多頁面,我總結需要以下幾個簡潔的步驟 1 整理出需要開啟的頁面 此過程可以用excel 或者是no...