设为首页 加入收藏

TOP

搞定linux上MySQL编程(四):数据导入导出和备份(一)
2015-11-21 01:46:18 来源: 作者: 【 】 浏览:0
Tags:搞定 linux MySQL 编程 数据 导入 导出 备份
?在MySQL中提供多种数据导入方法,比如mysqlinport、sql语句导入以及编写专门导入程序等。通常情况下,数据导入基本步骤科分成3步: 1. 确定导入的数据源,按固定格式存储的文本文件或者SQL文件。
2. 依照导入的文件格式,确定目标数据表,这个数据表如果没有,可以依照导入的文本文件格式,创建一个相对应的数据表。
3. 执行导入命令,将数据导入数据表中。

下面分别介绍MySQL提供的各种导入数据方法,此处设计一张表,一个一个要导入的数据,已文本格式存储。
1.数据源
创建一个如下文本文件,各字段已tab键隔开:
# cat myuser.txt 
zhao    25      8       2015-1-1
qian    22      4       2014-5-6
sun     31      1       2013-12-7
li      40      6       2014-12-12
zhou    45      3       2015-2-8
wu      18      1       2014-9-12
zheng   44      9       2012-10-12
wang    29      12      2015-3-6
2. 然后创建一张目标 数据库表,表的数据结构要和文本文件一一对应,如下:
[root@localhost db_bak]# mysql -u root -p
Enter password:

mysql> use db_users;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> create table user_import ( name varchar(32) not null primary key, age int, level int, login_date date );
Query OK, 0 rows affected (0.02 sec)

mysql> desc user_import;
+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| name       | varchar(32) | NO   | PRI | NULL    |       |
| age        | int(11)     | YES  |     | NULL    |       |
| level      | int(11)     | YES  |     | NULL    |       |
| login_date | date        | YES  |     | NULL    |       |
+------------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

mysql> 
3.导入数据,mysqlimport是MySQL提供的导入工具,该工具可以把文本文件导入到用户指定的数据表中。
mysqlimport 使用格式为: mysqlimport [-d/f...] tablename data.txt
其中[-d/f...] 是可选参数。 tablename用于表示数据库名称。 data.txt用于表示记录的文本文件,通常要导入的数据表名默认是与文本文件同名的。 例如下面运行mysqlimport命令将文本数据导入到MySQL中:
# cp /home/allen/user_import.txt /var/lib/mysql/db_users/
# mysqlimport -uroot -pxxx  db_users user_import.txt
db_users.user_import: Records: 8  Deleted: 0  Skipped: 0  Warnings: 0
# mysqlimport -uroot -p  db_users user_import.txt        
Enter password: 
mysqlimport: Error: 1062, Duplicate entry 'zhao' for key 'PRIMARY', when using table: user_import
# mysqlimport -d -uroot -p  db_users user_import.txt
Enter password: 
db_users.user_import: Records: 8  Deleted: 0  Skipped: 0  Warnings: 0
然后查看数据导入后的情况如下:
# mysql -u root -p
Enter password:
......
mysql> use db_users;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select * from user_import;
+-------+------+-------+------------+
| name  | age  | level | login_date |
+-------+------+-------+------------+
| zhao  |   25 |     8 | 2015-01-01 |
| qian  |   22 |     4 | 2014-05-06 |
| sun   |   31 |     1 | 2013-12-07 |
| li    |   40 |     6 | 2014-12-12 |
| zhou  |   45 |     3 | 2015-02-08 |
| wu    |   18 |     1 | 2014-09-12 |
| zheng |   44 |     9 | 2012-10-12 |
| wang  |   29 |    12 | 2015-03-06 |
+-------+------+-------+------------+
8 rows in set (0.00 sec)
有时候数据源的间隔符可能不是默认tab键,有可能是逗号,这时可以加入参数--field-terminatied-by=str, 导入的命令为:
# mysqlimport -uroot -pxxx --fields-terminated-by=, db_users user_import2.txt
db_users.user_import2: Records: 8  Deleted: 0  Skipped: 0  Warnings: 0
数据导出是将数据库中已存的数据导出到固定文本记录,mysqldump是MySQL中专门仅数据导出服务的工具,它可以将一个数据库、表,设置存储过程一SQL语句的形式导出,另外在数据备份中也会使用该工具。其使用格式为: mysqldump [-r/...] databsesname < data.sql [-r/...]为可选参数;
databsesname为数据库名称;
data.sql表示亚导出的SQL的脚本。
# mysqldump -u root -p db_users  > db_userr.sql        
Enter password: 
# ls -al db_userr.sql
-rw-r--r--. 1 root root 6366 Jun 10 22:52 db_userr.sql

# vim db_userr.sql
-- MySQL dump 10.13  Distrib 5.1.66, for re
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇MySQL和MsSQL实时自动数据同步 下一篇搞定linux上MySQL编程(六):C语..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: