MySQL导入导出txt文本

MySQL

在实际WEB开发的过程中,MySQL从文本中导入数据或导出数据到文本是非常常见的操作之一。其实MySQL当初设计的时候就已经考虑了这一需求,下面PHP程序员雷雪松详细的讲解下如何在MySQL中导入导出txt文本。

1、在MySQL数据库中创建一个用户表user,包含三个最基础字段:主键id,姓名name和年龄age。

1
2
3
4
5
6
CREATE TABLE USER(
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(32) NOT NULL,
age tinyint UNSIGNED,
PRIMARY KEY (id)
)ENGINE=InnoDB CHARSET=utf8;

2、制作一个user.txt文件,每一条内容用Tab键进行分隔不同的属性,多条换行。如果该字段为NULL,则用/N表示。 里面包含内容如下:

1
2
3
4
雷雪松 31
raykaeso 25
leixuesong 45
barbie /N

3、使用MySQL命令导入txt文本,指定本地路径和对应表中的字段。

1
LOAD DATA LOCAL INFILE "H:/user.txt" INTO TABLE USER(name,age);

注意:导入前一定要查看MySQL数据库的编码是否全部为utf8,否则会乱码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
mysql> SHOW VARIABLES LIKE '%char%';
+--------------------------+-----------------------------------------------+
| Variable_name | VALUE |
+--------------------------+-----------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | BINARY |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | d:\wamp\bin\mysql\mysql5.6.17\share\charsets\ |
+--------------------------+-----------------------------------------------+
8 ROWS IN SET

4、使用MySQL命令导出txt文本,字段之间的分隔默认是/t(即Tab),记录(行)之间的分隔默认是/n(换行)。

1
SELECT name,age INTO OUTFILE "H:/user.txt" FROM USER;

5、使用MySQL命令导出csv文件

1
SELECT name,age INTO OUTFILE FIELDS TERMINATED BY ',' "H:/user.txt" FROM USER;

6、导出时报错“ERROR 1290 (HY000): The MySQL server is running with the –secure-file-priv option so it cannot execute this statement”
解决办法有两种:
1、进入MySQL命令行输入命令show variables like ‘%secure%’;查看允许导出文件的目录,那么导出时的路径只能在这个目录下。
2、在MySQL配置文件,my.ini中将这个secure-file-priv的值设置为空:secure-file-priv=“”,重启MySQL就可以在任意目录下导出文件。

来源:MySQL导入导出txt文本

发表评论

电子邮件地址不会被公开。 必填项已用*标注