1. 程式人生 > >LOAD DATA INFILE & mysqlimport

LOAD DATA INFILE & mysqlimport

closed cape char reconnect thread script ESS 保持 nor

+++++++++++++++++++++++++++++++++++++++++++++mysqlimport+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

其實如果用mysqlimport是mysql數據庫提供的一個命令行程序,從本質來說j load data infile的命令接口,而且大多數的選項都和load data infile語法相同。

shell>mysqlimport [option] db_name testfile1 [testfile2 ...]

select into outfile 註意保持時以表名加.txt,以便恢復。

和load data infile不同的是,mysqlimport可以用來導入多張表,並且通過--user-thread參數並發地導入不同的文件,這裏的並發指並發導入多個文件,而不是指mysqlimport可以並發地導入一個文件。

[root@zstedu andyxi3306]# mv 1.txt sbtest2.txt
[root@zstedu andyxi3306]# mv 2.txt sbtest1.txt
[root@zstedu andyxi3306]# mysqlimport -h127.0.0.1 -uroot -p --use-threads=2 andyxi3306 /tmp/andyxi3306/sbtest1.txt /tmp/andyxi3306/sbtest2.txt
Enter password:
andyxi3306.sbtest1: Records: 500000 Deleted: 0 Skipped: 0 Warnings: 0
andyxi3306.sbtest2: Records: 500000 Deleted: 0 Skipped: 0 Warnings: 0

*************************** 1. row ***************************
Id: 29
User: root
Host: localhost:38566
db: andyxi3306
Command: Sleep
Time: 130
State:
Info: NULL
*************************** 2. row ***************************
Id: 37
User: root
Host: localhost:38582
db: NULL
Command: Query
Time: 0
State: starting
Info: show processlist
*************************** 3. row ***************************
Id: 41
User: root
Host: localhost:38590
db: andyxi3306
Command: Query
Time: 15
State: executing
Info: LOAD DATA INFILE ‘/tmp/andyxi3306/sbtest2.txt‘ INTO TABLE `sbtest2` IGNORE 0 LINES
*************************** 4. row ***************************
Id: 42
User: root
Host: localhost:38592
db: andyxi3306
Command: Query
Time: 15
State: executing
Info: LOAD DATA INFILE ‘/tmp/andyxi3306/sbtest1.txt‘ INTO TABLE `sbtest1` IGNORE 0 LINES


4 rows in set (0.00 sec)

mysqlimport恢復時其實用的還是load data infile

++++++++++++++++++++++++++++++++++++++++load data infile+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

如果通過mysqldump加參數--tab=path,或者通過select ... into outfile導出的數據需要恢復,此時可以通過load data infile來進行導入。

語法:

[email protected]:3306 [andyxi3306]>help load data
Name: ‘LOAD DATA‘
Description:
Syntax:
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE ‘file_name‘
[REPLACE | IGNORE]
INTO TABLE tbl_name
[PARTITION (partition_name [, partition_name] ...)]
[CHARACTER SET charset_name]
[{FIELDS | COLUMNS}
[TERMINATED BY ‘string‘]
[[OPTIONALLY] ENCLOSED BY ‘char‘]
[ESCAPED BY ‘char‘]
]
[LINES
[STARTING BY ‘string‘]
[TERMINATED BY ‘string‘]
]
[IGNORE number {LINES | ROWS}]
[(col_name_or_user_var
[, col_name_or_user_var] ...)]
[SET col_name={expr | DEFAULT},
[, col_name={expr | DEFAULT}] ...]

要對服務器文件使用load data infile,必須有file權。其中對於導入格式的選項和select into outfile命令完全一樣。

ignore number lines選項可以忽略導入的前幾行。

測試:

[email protected]:3306 [andyxi3306]>select * into outfile ‘/tmp/andyxi3306/2.txt‘ from sbtest1;

Query OK, 500000 rows affected (2.66 sec)

[email protected]:3306 [andyxi3306]>delete from sbtest1;

Query OK,

500000 rows affected (37.19 sec)

[email protected]:3306 [andyxi3306]>select * from sbtest1;

ERROR 2013 (HY000): Lost connection to MySQL server during query

[email protected]:3306 [andyxi3306]>select * from sbtest1;

ERROR 2006 (HY000): MySQL server has gone away No connection. Trying to reconnect... Connection id: 29 Current database: andyxi3306

Empty set (0.21 sec)

[email protected]:3306 [andyxi3306]>load data infile ‘/tmp/andyxi3306/2.txt‘ into table sbtest1;

Query OK, 500000 rows affected (43.99 sec) Records: 500000 Deleted: 0 Skipped: 0 Warnings: 0

[email protected]:3306 [andyxi3306]>select * from sbtest1 limit 2\G;

*************************** 1. row ***************************

id: 1 k: 252272

c: 76529735171-62619715576-43660157506-14122022461-23499333486-12530790621-96252745722-53101978020-30217711642-99182948190 pad: 78049175839-40449686376-46985343292-10855530210-03527816365

*************************** 2. row ***************************

id: 2 k: 251402

c: 35080843840-11823110763-17669742564-34386700636-31442953158-68823209002-35432290765-12996120436-32406040794-96855478492 pad: 47097503610-43096903937-36148507150-61897060196-12382094341 2 rows in set (0.00 sec)

數據恢復成功

LOAD DATA INFILE & mysqlimport