Mysql导入,导出数据

一.导入数据

Mysql使用LOAD DATA INFILE语句插入数据,数据内容为文本文件newdata.txt,将新数据插入到YouClass表中;
表YouClass原有内容如下:

id name sex degree passtest
2 Mary 1 89.34 0
3 tom 0 NULL 0

newdata.txt内容如下:

4   John    0   90  1
5   Jack    1   60  \N

mysql命令行执行如下命令:

mysql> LOAD DATA LOCAL INFILE '/Users/hugang/Desktop/newdata.txt' INTO TABLE YouClass;

表YouClass变更为

id name sex degree passtest
2 Mary 1 89.34 0
3 tom 0 NULL 0
4 John 0 90.00 1
5 Jack 1 60.00 NULL

说明:
LOCAL,从客户主机上按路径读取文件;不添加LOCAL,则从服务器上按路径读取文件。
数据文件中\N标记为NULL。
可以指定列值的分隔符和行尾标记;默认为\t和换行符。

DOS 下换行符:\r\n

Unix 下换行符:\n

Mac 下换行符: \r

可以显示指定列值的分隔符和行尾标记(可选项)

FIELDS(TERMINATED BY、[OPTIONALLY] ENCLOSED BY 和 ESCAPED BY) 

LINES TERMINATED BY、[OPTIONALLY] ENCLOSED BY 和 ESCAPED BY) 

e.g.

FIELDS TERMINATED BY ':'

LINES TERMINATED BY '\r\n'

LOAD DATA默认是按照数据文件中列的顺序插入到表中,如果数据文件列的顺序和表不一致,可以指定插入到列的顺序。

新插入文件data.txt:

Lee     98  1   1
Chen    100 1   0

列名顺序:name, degree, sex, passtest

执行:

mysql> LOAD DATA LOCAL INFILE '/Users/hugang/Desktop/data.txt'
    -> INTO TABLE YouClass(name, degree, sex, passtest);

查看YouClass表:

id name sex degree passtest
2 Mary 1 89.34 0
3 tom 0 NULL 0
4 John 0 90.00 1
5 Jack 1 60.00 NULL
7 Lee 1 98.00 1
8 Chen 1 100.00 0

二.导出数据

SELECT … INTO OUTFILE语句导出表中数据

mysql> SELECT * 
    -> FORM YouClass INTO OUTFILE '/tmp/YouClass.txt';

YouClass.txt内容:

2   Mary    1   89.34   0
3   tom     0   \N      0
4   John    0   90.00   1
5   Jack    1   60.00   \N
7   Lee     1   98.00   1
8   Chen    1   100.00  0

可以指定输出格式:

SELECT *  FROM YouClass 
INTO OUTFILE '/tmp/data.txt' 
FIELDS TERMINATED BY ',' ENCLOSED BY '"';

data.txt内容:

"2","Mary","1","89.34","0"
"3","tom","0",\N,"0"
"4","John","0","90.00","1"
"5","Jack","1","60.00",\N
"7","Lee","1","98.00","1"
"8","Chen","1","100.00","0"

mysqldump转存数据库

mysqldump会生成一个SQL脚本,包含新建数据库表内容所需的CREATE ,INSERT等。

mysqldump: command not found问题解决:
find / -name mysqldump -print
/Applications/XAMPP/xamppfiles/bin/mysqldump
ln -fs /Applications/XAMPP/xamppfiles/bin/mysqldump /usr/bin

1.表结构导入到特定目录下:

#mysqldump -uroot -p --tab=/tmp/tab test YouClass

在/tmp/tab生成YouClass.sql,主要内容如下:

DROP TABLE IF EXISTS `YouClass`;
CREATE TABLE `YouClass` (
`id` int(4) NOT NULL AUTO_INCREMENT,
 `name` char(20) NOT NULL,
 `sex` int(4) NOT NULL DEFAULT '0',
 `degree` double(16,2) DEFAULT NULL,
 `passtest` int(4) DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1;

导出数据到指定文件

导出一张表
#mysqldump -uroot -p test YouClass > YouClass.sql

查看YouClass.sql主要内容,包括了INSERT INTO内容:

--
-- Table structure for table `YouClass`
--

DROP TABLE IF EXISTS `YouClass`;
/*!40101 SET @saved_cs_client     =         @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `YouClass` (
 `id` int(4) NOT NULL AUTO_INCREMENT,
 `name` char(20) NOT NULL,
 `sex` int(4) NOT NULL DEFAULT '0',
 `degree` double(16,2) DEFAULT NULL,
  `passtest` int(4) DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `YouClass`
--

LOCK TABLES `YouClass` WRITE;
/*!40000 ALTER TABLE `YouClass` DISABLE KEYS */;
INSERT INTO `YouClass` VALUES (2,'Mary',1,89.34,0), (3,'tom',0,NULL,0),(4,'John',0,90.00,1),(5,'Jack',  1,60.00,NULL),(7,'Lee',1,98.00,1),(8,'Chen',1,100.00,0);
/*!40000 ALTER TABLE `YouClass` ENABLE KEYS */;
UNLOCK TABLES;
导出整个数据库:
#mysqldump -uroot -p test > test.sql
导出所有数据库,可用于数据库的备份:
#mysqldump -uroot -p --all-databases > alldata.sql
以上mysqldump 可加上-d参数,只导出结果,无数据。
根据*.sql导入到数据库
mysql>use 数据库名;
mysql>source test.sql

当恢复数据库时,可以备份的sql文件恢复,表和单个数据库的备份sql需要数据库已经创建;所有数据库的sql不需要,它包含创建数据库过程

恢复一张表:
#mysql -uroot -p test < YouClass.sql
恢复整个数据库:
#mysql -uroot -p test < test.sql
恢复所有数据库:
#mysql -uroot -p < alldata.sql
导出到远程主机上
mysqldump -uroot -p test | mysql -h 10.13.1.139 test


查看10.13.1.139 机器上的test库,新增数据:
mysql> SHOW TABLES;


mysql> SHOW TABLES;
+----------------+
| Tables_in_test |
+----------------+
| YouClass       |
| person         |
+----------------+
2 rows in set (0.00 sec)

你可能感兴趣的:(mysql)