1. 程式人生 > >mysql 查詢結果匯入檔案或excel 檔案匯入資料庫

mysql 查詢結果匯入檔案或excel 檔案匯入資料庫

查詢結果匯入檔案或excel
方法1
進入mysql伺服器中

select * from www limit 1000  into outfile  '/xusy/www.xls';

注意檔名外有單引號
如果方法1不行,當連線外部伺服器

方法2
直接進行操作

mysql  -utest -p123456 -h10.1.5.8 -P3306 -e"select * from his limit 1000 " pop> /xusy/1000line.xls; 

注意連線引數4個要全,還有加-e

如果是檔案,則為.txt,如果為excel,則為.xls

檔案匯入資料庫
LOAD DATA INFILE 語句以非常高的速度從文字檔案中讀取行到表中。
當從一個文字檔案裝載一個表時,使用LOAD DATA INFILE。這通常比使用很多INSERT語句快20倍。
詳情可見

http://blog.itpub.net/28218939/viewspace-2139664/

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
[REPLACE | IGNORE]
INTO TABLE tbl_name
[PARTITION (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,...)]
[SET col_name = expr,...]

複製程式碼
舉例:

複製程式碼

> delete from e;
> load data infile "/data/mysql/e.sql" into table e fields terminated by ',';
Query OK, 3 rows affected (0.01 sec)
Records: 3  Deleted: 0  Skipped: 0  Warnings: 0

> select * from e;
+------+-------+-------+
| id   | fname | lname |
+------+-------+-------+
| 1669 | Jim   | Smith |
|  337 | Mary  | Jones |
| 2005 | Linda | Black |
+------+-------+-------+

複製程式碼
因為我們前面指定的分隔符是 ‘,’,load data 時也要指定分隔符,否則也會報錯:

> load data infile "/data/mysql/e.sql" into table e;
ERROR 1265 (01000): Data truncated for column 'id' at row 1

如果資料被某種符號封閉著,需要指定 ‘ fields enclosed by ’ :

複製程式碼
cat e.sql

"1669"  "Jim"   "Smith"
 > load data infile "/data/mysql/e.sql" into table e;
 ERROR 1366 (HY000): Incorrect integer value: '"1669"' for column 'id' at row 1

 > load data infile "/data/mysql/e.sql" into table e fields enclosed by '"'; 
 Query OK, 1 row affected (0.01 sec)
 Records: 1 Deleted: 0 Skipped: 0 Warnings: 0

複製程式碼
如上所示,資料被雙引號封閉著,如果直接執行,會報錯。

另外還有一些格式上的限制,如 LINES TERMINATED BY ‘string’ ,指定 file 的換行符,如 ‘\n’ 。