日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql load data into_MySQL 之 LOAD DATA INFILE 快速导入数据

發布時間:2024/8/1 数据库 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 快速导入数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。