mysql load data into_MySQL 之 LOAD DATA INFILE 快速导入数据
SELECT INTO OUTFILE
> help select;
Name:‘SELECT‘Description:
Syntax:SELECT
[ALL | DISTINCT | DISTINCTROW]
[HIGH_PRIORITY]
[MAX_STATEMENT_TIME = N]
[STRAIGHT_JOIN]
[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
[SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]select_expr[, select_expr ...]
[FROM table_references
[PARTITION partition_list]
[WHERE where_condition]
[GROUP BY {col_name | expr | position}
[ASC | DESC], ... [WITH ROLLUP]][HAVING where_condition]
[ORDER BY {col_name | expr | position}
[ASC | DESC], ...][LIMIT {[offset,] row_count |row_count OFFSET offset}][PROCEDURE procedure_name(argument_list)]
[INTO OUTFILE ‘file_name‘
[CHARACTER SET charset_name]export_options| INTO DUMPFILE ‘file_name‘
| INTO var_name [, var_name]][FOR UPDATE | LOCK IN SHARE MODE]]
舉例:
> select * frome;+------+-------+-------+
| id | fname | lname |
+------+-------+-------+
| 1669 | Jim | Smith |
| 337 | Mary | Jones |
| 2005 | Linda | Black |
+------+-------+-------+
> select * from e into outfile "/data/mysql/e.sql";
或
> select * into outfile "/data/mysql/e.sql" from e;
# cat e.sql1669Jim Smith337Mary Jones2005Linda Black
可以看到,select...into outfile 的結果只包含了表數據,默認以 Tab 分隔,也可指定分隔符:
> select * from e into outfile "/data/mysql/e.sql" fields terminated by ‘,‘;
# cat e.sql1669,Jim,Smith337,Mary,Jones2005,Linda,Black
注意:outfile ‘/path/file‘,中的 path 需要有mysql的權限,否則會報錯:
> select * from t into outfile "/root/backup/mysql/t.sql";
ERROR1 (HY000): Can‘t create/write to file‘/root/backup/mysql/t.sql‘(Errcode: 13 - Permission denied)
LOAD DATA INFILE
LOAD DATA INFILE 語句以非常高的速度從文本文件中讀取行到表中。
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE ‘file_name‘
[REPLACE | IGNORE]
INTO TABLEtbl_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.01sec)
Records:3 Deleted: 0 Skipped: 0 Warnings: 0
> select * frome;+------+-------+-------+
| id | fname | lname |
+------+-------+-------+
| 1669 | Jim | Smith |
| 337 | Mary | Jones |
| 2005 | Linda | Black |
+------+-------+-------+
因為我們前面指定的分隔符是 ‘,‘,load data 時也要指定分隔符,否則也會報錯:
> load data infile "/data/mysql/e.sql" into tablee;
ERROR1265 (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’ 。
原文:http://www.cnblogs.com/waynechou/p/7794939.html
總結
以上是生活随笔為你收集整理的mysql load data into_MySQL 之 LOAD DATA INFILE 快速导入数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dubbo图形化界面搭建_使用 JMet
- 下一篇: python如何创建模块教程_Pytho