搞定linux上MySQL编程(五):数据导入导出和备份

【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】

在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. 然后创建一张目标数据库表,表的数据结构要和文本文件一一对应,如下:

[[email protected] 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 redhat-linux-gnu (i386)
--
-- Host: localhost    Database: db_users
-- ------------------------------------------------------
-- Server version       5.1.66
/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */;
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */;
/*!40101 SET @[email protected]@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @[email protected]@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @[email protected]@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @[email protected]@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `password`
--
DROP TABLE IF EXISTS `password`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
"db_userr.sql" 163L, 6366C                                                1,1           Top
-- MySQL dump 10.13  Distrib 5.1.66, for redhat-linux-gnu (i386)
--
-- Host: localhost    Database: db_users
-- ------------------------------------------------------
-- Server version       5.1.66
......

数据导出成功。

数据库导出文件可以通过如下几种方式来恢复到数据库中:

1 利用mysql命令执行数据的恢复操作:

# mysql -u root db_users2 < db_userr.sql -p
Enter password:
[[email protected] allen]# mysql -u root -p
Enter password:
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| db_users           |
| db_users2          |
| mysql              |
| test               |
+--------------------+
5 rows in set (0.00 sec)

mysql> 

2. sql语句source 来导入。

mysql> create database db_users3;
Query OK, 1 row affected (0.00 sec)
mysql> use db_users3;
Database changed
mysql> source db_userr.sql
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)

对于单个表示的数据备份可以采用select into ... outfile ... 进行数据导出,利用load data ... 方式进行数据导入。

数据表备份执行如下:

mysql> select  * into outfile 'tbbk_users' from tb_users;
Query OK, 13 rows affected (0.00 sec)

数据表执行如下:

mysql> load data infile 'tbbk_users' into table tb_users;
Query OK, 13 rows affected, 13 warnings (0.00 sec)
Records: 13  Deleted: 0  Skipped: 0  Warnings: 13
时间: 2024-07-30 13:48:17

搞定linux上MySQL编程(五):数据导入导出和备份的相关文章

搞定linux上MySQL编程(六):C语言编写MySQL程序(结)

[版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 在实际应用中,我们不可能在命令行登录进数据库进行数据的查询.插入等操作,用户一般是使用一个界面良好的应用程序软件来对数据进行管理.为了方便应用程序的开发,MySQL提供了多种编程语言(C.perl.php等)的编程接口,供开发者使用. 对于C语言来说,MySQL提供了C语言客户机库,它允许从任何C程序的内部访问MySQL数据库,客户机实现API,API定义了客户机如何建立和执

搞定linux上MySQL编程(四):mysql权限管理

[版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] mysql中提供了比较完整的安全/权限管理系统,下面简单介绍权限的原理和使用. mysql数据库安装完成启动之后,能看当前数据库列表可以看到一个mysql的数据库: mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | |

搞定linux上MySQL编程(二):MySQL语法基础操作

[版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] sql(structured query language)是一种数据库查询和程序设计语言,用于存取数据以及查询.更新和管理关系数据库系统. sql语言包含3部分: 1. 数据定义语言(DDL),用于定义和管理对象,例如数据库.数据表以及试图等.例如create.drop.alter等语句. 2. 数据操作语言(DML),用于操作数据库中数据,例如select. insert

搞定linux上MySQL编程(三):MySQL高级语法

[版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 本节介绍Mysql高级语法,包括试图.存储过程.索引等,通过使用试图.触发器等来优化数据库设计和查询技术,提高数据处理能力与效率. 视图操作: 视图是一个虚拟表,内容由查询定义.视图并不在数据库中以存储的数据值集形式存在,行和列数据来源于定义视图的查询所引用的表,且在引用试图时动态生成.从数据库系统外部来看,视图就如同一张表一样,对表能够进行的一般操作的哦可以应用于视图,例如

搞定linux上MySQL编程(一):linux上源码安装MySQL

[版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 1. 首先下载源码包: ftp://ftp.jaist.ac.jp/pub/mysql/Downloads/MySQL-5.1/mysql-5.1.72.tar.gz 2. 使用如下命令检查系统中是否已安装mysql: rpm -qa | grep mysql 3.没有安装则解压安装包然后进入该目录: cd mysql 分别依次执行如下操作: ./configure --pr

Linux下mongodb安装及数据导入导出教程

Linux下mongodb安装及数据导入导出教程 #查看linux发行版本 cat /etc/issue #查看linux内核版本号 uname -r 一.Linux下mongodb安装的一般步骤 1.到mongodb的官网(https://www.mongodb.org/downloads) 下载相应你系统的安装包,拷贝(能够用ftp工具如winscp)到你的linux系统上面. 2.解压相应的安装包 命令例如以下:tar zxvf mongodb-linux-x86_64-3.0.4.tgz

MongoDB学习(三)数据导入导出及备份恢复

这几天想着公司要用MongoDB,自然就要用到数据导入导出,就自己学习了一下. 在Mongo学习(二)中就讲到了在bin目录下有一些工具,本篇就是使用这些工具进行数据的导入导出及备份恢复. 注意:以下命令均在cmd命令行中输入,导出及备份未指明目录情况下,均保存在当前操作目录下. 数据导出mongoexport 1.常用导出方法:导出数据为json 假设库里有一张area 表,里面有9 条记录,我们要将它导出 >c:\mongo\bin\mongoexport -d iflashbuy_log

mysql中的数据导入导出

数据导入 1.mysqlimport命令行导入数据 在使用mysqlimport命令导入数据时,数据来源文件名要和目标表一致,不想改文件名的话,可以复制一份创建临时文件,示例如下. 建立一个文本users.txt,内容如下: 创建一个表users 使用mysqlimport将users.txt中数据导入users表 PS F:\> mysqlimport -u root -p123456 zz --default-character-set=gbk --fields-terminated-by=

mongodb数据导入导出以及备份恢复

数据导出 mongoexport 假设库里有一张user 表,里面有2 条记录,我们要将它导出 > use my_mongodb switched to db my_mongodb > db.user.find(); { "_id" : ObjectId("4f81a4a1779282ca68fd8a5a"), "uid" : 2, "username" : "Jerry", "age