mysql的批量處理

2021-08-19 19:45:52 字數 3847 閱讀 8653

對於大批量資料的遷移工作,採用資料庫自身的高速批量處理能力可以較快的實現

匯出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...