mysql 导入 文章_MySQL导入与导出

当我们使用mysql数据库时,经常会遇到数据的导入导出,在这里,我简单的介绍几个常用的方法,供大家方便使用。

1、利用LOAD DATA INFILE 导入数据

1.1 LOAD DATA 语法命令

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_nme'

[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

[STARTINGG BY 'string']

[TERMINATED BY 'string']

]

[IGNORE number {LINES]

[(col_name_or_user_var,...)]

[SET col_name = expr,...]

1.2 LOAD DATA 参数说明

LOW_PRIORITY

当没有回话读表时,才会加载数据。

CONCURRENT

现在就加载数据。

LOCAL

从客户主机读文件,如果没有指定,则文件必须放在服务器上。

REPLACE | IGNORE

REPLACE:如果有唯一索引的行,新行替换旧行。

IGNORE:跳过有唯一索引的行,避免数据重复插入

如果不指定,就会报错。除非没有唯一索引,就会重复插入。

FIELDS |COLUMNS

FIELDS:指定文件的分隔的格式。

COLUMNS:指定哪些列。

TERMINATED BY 'string'

每个字段以什么作为分隔符,默认为','。

LINES

指定了每条记录的分隔符默认'\n'即为换行符。

STARTINGG BY 'string'

以什么开头

TERMINATED BY 'string

以什么结尾,换行。

1.3 导入数据

测试环境准备

a) 准备好一个TXT文本文件,保存于/var/lib/mysql/example1.TXT,内容如下:

001,宋蔚然,0,32

002,李赞,1,11

003,李师师,0,26

004,周志国,1,28

005,金婷,0,20

006,张静,0,22

b) 在 my.cnf 文件中加一个参数,需要重启 mysql: secure-file-priv=/var/lib/mysql

c) 在mysql数据库中,创建一张表,字段与文件example1保持一致:

mysql> create database test;

Query OK, 1 row affected (0.00 sec)

mysql> use test;

Database changed

mysql> create table ld_test1(

-> id int not null,

-> username varchar(8) not null,

-> gender tinyint not null,

-> age smallint not null

-> );

Query OK, 0 rows affected (0.02 sec)

d) 导入数据

mysql> load data infile '/var/lib/mysql/example1.TXT' into table ld_test1 fields terminated by ',';

Query OK, 6 rows affected (0.01 sec)

Records: 6 Deleted: 0 Skipped: 0 Warnings: 0

mysql> select * from id_test1;

+----+-----------+--------+-----+

| id | username | gender | age |

+----+-----------+--------+-----+

| 1 | 宋蔚然 | 0 | 32 |

| 2 | 李赞 | 1 | 11 |

| 3 | 李师师 | 0 | 26 |

| 4 | 周志国 | 1 | 28 |

| 5 | 金婷 | 0 | 20 |

| 6 | 张静 | 0 | 22 |

+----+-----------+--------+-----+

6 rows in set (0.00 sec)

1.4 LOAD DATA 数据加载时增加一个时间列

a) 增加一个时间列

mysql> alter table ld_test1 add update_time timestamp not null;

Query OK, 0 rows affected (0.04 sec)

Records: 0 Duplicates: 0 Warnings: 0

b) 清空数据

mysql> truncAte table ld_test1;

Query OK, 0 rows affected (0.01 sec)

mysql> select * from ld_test1;

Empty set (0.00 sec)

mysql> desc ld_test1;

+-------------+-------------+------+-----+-------------------+-----------------------------+

| Field | Type | Null | Key | Default | Extra |

+-------------+-------------+------+-----+-------------------+-----------------------------+

| id | int(11) | NO | | NULL | |

| username | varchar(8) | NO | | NULL | |

| gender | tinyint(4) | NO | | NULL | |

| age | smallint(6) | NO | | NULL | |

| update_time | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |

+-------------+-------------+------+-----+-------------------+-----------------------------+

5 rows in set (0.00 sec)

mysql> select * from ld_test1;

Empty set (0.00 sec)

c) 重新导入数据

mysql> load data infile '/var/lib/mysql/example1.TXT' ignore into table ld_test1 fields terminated by ',' lines terminated by '\n' set update_time=current_timestamp;

Query OK, 6 rows affected, 6 warnings (0.01 sec)

Records: 6 Deleted: 0 Skipped: 0 Warnings: 6

mysql> select * from ld_test1;

+----+-----------+--------+-----+---------------------+

| id | username | gender | age | update_time |

+----+-----------+--------+-----+---------------------+

| 1 | 宋蔚然 | 0 | 32 | 2020-07-12 15:36:10 |

| 2 | 李赞 | 1 | 11 | 2020-07-12 15:36:10 |

| 3 | 李师师 | 0 | 26 | 2020-07-12 15:36:10 |

| 4 | 周志国 | 1 | 28 | 2020-07-12 15:36:10 |

| 5 | 金婷 | 0 | 20 | 2020-07-12 15:36:10 |

| 6 | 张静 | 0 | 22 | 2020-07-12 15:36:10 |

+----+-----------+--------+-----+---------------------+

6 rows in set (0.00 sec)

2、SQL语句导出数据

2.1 SQL语句导出数据语法命令

select ...

[FROM table_references

WHERe/GROUP BY/ORDER BY/LIMIT

[INTO OUTFILe 'file_name'

[CHARACTER SET chrset_name]

[{FIELDS | COLUMNS }]

[TERMINATED by 'string']

[[OPTIONALLY] enclosed by 'char']

[ESCAPED by 'char']

]

[LINES

[STARTING by 'string']

[TERMINATED by 'string']

]

| INTO DUMPFILe 'file_name'

| INTO var_nmae [, var_nmae]]

2.2 导出数据

mysql> select * into outfile '/var/lib/mysql/example1.TXT' from ld_test1;

Query OK, 6 rows affected (0.01 sec)

2.3 查看文件

[root@ligang scripts]# cat /var/lib/mysql/example1.TXT

1 宋蔚然 0 32 2020-07-12 15:36:10

2 李赞 1 11 2020-07-12 15:36:10

3 李师师 0 26 2020-07-12 15:36:10

4 周志国 1 28 2020-07-12 15:36:10

5 金婷 0 20 2020-07-12 15:36:10

6 张静 0 22 2020-07-12 15:36:10

3、利用CSV存储引擎加载数据

3.1 准备好一个TXT文本文件,保存于/var/lib/mysql/example1.TXT,内容如下:

001,宋蔚然,0,32

002,李赞,1,11

003,李师师,0,26

004,周志国,1,28

005,金婷,0,20

006,张静,0,22

3.2 在mysql数据库中,创建一张表,存储引擎为CSV,字段与文件example1.TXT保持一致:

mysql> create table ld_csv1(

-> id int not null,

-> username varchar(8) not null,

-> gender tinyint not null,

-> age smallint not null

-> )engine=csv default charset=utf8;

Query OK, 0 rows affected (0.00 sec)

3.3 进入到ld_csv1对应的文件夹,即可找到对应的ld_csv1.CSV数据文件。

[root@test test]# cd /mysql/data/3306/data/test

[root@test test]# ll

total 128

-rw-rw----. 1 mysql mysql 61 Jul 12 15:00 db.opt

-rw-rw----. 1 mysql mysql 8700 Jul 12 15:28 id_test1.frm

-rw-rw----. 1 mysql mysql 98304 Jul 12 15:36 id_test1.ibd

-rw-rw----. 1 mysql mysql 35 Jul 12 16:37 ld_csv1.CSM

-rw-rw----. 1 mysql mysql 0 Jul 12 16:37 ld_csv1.CSV

-rw-rw----. 1 mysql mysql 8656 Jul 12 16:37 ld_csv1.frm

此时,ld_csv1.CSV文件是空的。

3.4 粘贴数据到ld_csv1.CSV数据文件。

[root@test test]# cat /var/lib/mysql/example1.TXT > /mysql/data/3306/data/test/ld_csv1.CSV

3.5 查询数据。

mysql> select * from ld_csv1;

+----+-----------+--------+-----+

| id | username | gender | age |

+----+-----------+--------+-----+

| 1 | 宋蔚然 | 0 | 32 |

| 2 | 李赞 | 1 | 11 |

| 3 | 李师师 | 0 | 26 |

| 4 | 周志国 | 1 | 28 |

| 5 | 金婷 | 0 | 20 |

| 6 | 张静 | 0 | 22 |

+----+-----------+--------+-----+

6 rows in set (0.00 sec)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值