一、 从文本文件中读取数据
- 数据导入
CSV文件:以逗号分隔符组织起来的文本数据,CSV文件的每一行数据包含的数据项目和表的列名一一对应,CSV的一行数据导入到表中就成为表中的一条记录。
- 导入数据文件
LOAD DATA INFILE 文件名 INTO TABLE 表名 选项;
指定选项的语法:
FIELDS TERMINATED BY 分隔字符(默认为\t)
LINES TERMINATED BY 换行字符(默认为\n)
IGNORE 最初跳过的行 LINES(默认为0)
Eg: mysql> LOAD DATA INFILE 'C:/Users/HYJ/Desktop/product.csv' INTO TABLE product FIELDS TERMINATED BY ',';
ERROR 1366 (HY000): Incorrect integer value: '茂禄驴4' for column 'pid' at row 1、
错误原因,需要将.CSV文件编码改为ANSI(之前是utf-8)
mysql> LOAD DATA INFILE 'C:/Users/HYJ/Desktop/product.csv' INTO TABLE product FIELDS TERMINATED BY ',';
ERROR 1265 (01000): Data truncated for column 'price' at row 1
错误原因:未添加LINES TERMINATED BY '\r\n'
mysql> LOAD DATA INFILE 'C:/Users/HYJ/Desktop/product.csv' INTO TABLE product FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';
Query OK, 2 rows affected (0.03 sec)
Records: 2 Deleted: 0 Skipped: 0 Warnings: 0
这次对了,结果如下,出现中文乱码
最终版本:
mysql> LOAD DATA INFILE 'C:/Users/HYJ/Desktop/product.csv' INTO TABLE product character
set gb2312 FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';
Query OK, 2 rows affected (0.03 sec)
Records: 2 Deleted: 0 Skipped: 0 Warnings: 0
3. 导出文件
导出文件可以做必要时表数据的备份
select * into outfile ‘C:/Users/Administrator/Desktop/test1.csv’ from product;#老是报错Can’t create/write to file,结果修改了导出文件的路径就对了
select * into outfile ‘C:/Users/HYJ/Desktop/test/test1.csv’ from product;
select * from product into outfile ‘C:/Users/HYJ/Desktop/test/test3.csv’ fields terminated by ‘,’ lines terminated by ‘\n’;
把from product放后面也可以
select * into outfile ‘C:/Users/HYJ/Desktop/test/test2.csv’ fields terminated by ','lines terminated by ‘\n’ from product;
导出文件后用excel打开.csv文件可能出现中文乱码:
法一:导出语句加上CHARACTER SET gbk (注意加入的位置)
select * into outfile ‘C:/Users/HYJ/Desktop/test/test5.csv’ CHARACTER SET gbk fields terminated by ','lines terminated by ‘\n’ from product ;
法二:用记事本打开文件后保存为utf8格式,再用excel打开.csv文件就好了
4. 执行文件中保存的SQL命令系列
可以事先在文本中编辑一系列SQL命令,然后一次执行。
SOURCE 文本文件名
Eg1:新建一个orders的txt文件,写入要使用的mysql指令;
打开CMD,进入mysql的安装bin目录:
cd C:\Program Files\MySQL\MySQL Server 5.5\bin
进入(启动)mysql监视器:
mysql -u root –p123456
SOURCE C:\Users\HYJ\Desktop\test\orders.txt
5.在命令串口不启动mysql监视器直接运行SQL文本文件
mysql (数据库名) -u root -p123456 -e “命令”
mysql onlineshop -u root -p123456 -e “SOURCE C:\Users\HYJ\Desktop\test\orders.txt”
Eg3:可以在批处理文件中调用txt文件
批处理文件orders.bat内容如下:
cd C:\Program Files\MySQL\MySQL Server 5.5\bin
p123456 -e "SOURCE C:\Users\HYJ\Desktop\test\orders.txt"
pause
二、 文件中保存SQL的执行结果
- 重定向将SQL语句的执行结果输出到文本文件中
Eg1:打开终端cmd,输入下面语句:
cd C:\Program Files\MySQL\MySQL Server 5.5\bin
mysql onlineshop -uroot -p123456 > C:\Users\HYJ\Desktop\test\log.txt
set names gbk;
select * from user;
select * from product;
exit
Eg2:直接运行含sql语句的txt文件
打开终端cmd,输入下面语句:
cd C:\Program Files\MySQL\MySQL Server 5.5\bin
mysql onlineshop –uroot –p123456 –e “SOURCE C:\Users\HYJ\Desktop\test\orders.txt” > C:\Users\HYJ\Desktop\test\log.txt
2. 使用tee命令将SQL语句的执行结果输出到文本文件中
Eg1:将tee 与notee之间的结果保存到文件log1.txt中
进入mysql 命令行
mysql> tee C:\Users\HYJ\Desktop\test\log1.txt
Logging to file ‘C:\Users\HYJ\Desktop\test\log1.txt’
mysql> use onlineshop
Database changed
mysql> select * from product;
±----±------±-------+
| pid | pname | price |
±----±------±-------+
| 1 | 灯 | 32 |
| 2 | 车 | 100000 |
| 3 | 精油 | 100 |
| 4 | 纸卷 | 15 |
| 5 | 钢笔 | 25 |
±----±------±-------+
5 rows in set (0.00 sec)
mysql> notee
Outfile disabled.
mysql> exit
Bye
log1.txt文件内容:
三、 数据库的整体备份与恢复
- 转储与恢复
转储:将数据库整体保存到文件的操作
恢复: 将转储文本文件转换成数据库的操作 - 使用mysqldump命令对数据库进行转储
Eg:将数据库onlinshop转储到文件onlinshop_out.txt
mysqldump –u root –p123456 onlinshop > onlinshop_out.txt
出现了拒绝访问的情况
原因:未指定输出文件目录
C:\Program Files\MySQL\MySQL Server 5.5\bin>mysqldump -u root -p123456 onlineshop > C:\Users\HYJ\Desktop\test\onlinshop_out.txt
C:\Program Files\MySQL\MySQL Server 5.5\bin>
还可以设置字符编码(加入default-character-set=utf8)
mysqldump -u root -p123456 onlineshop > C:\Users\HYJ\Desktop\test\onlinshop_out1.txt --default-character-set=utf8
3. 转储文件的恢复(有问题,怎么弄都不能恢复数据)
Eg:将onlinshop_out1.txt文件恢复为数据库onlinshop_out
mysqladmin –u root –p123456 create class_out character set utf8
mysql –u root –p 123456 class_out < C:\Users\HYJ\Desktop\test\class.txt --default-character-set=utf8
mysqldump -uroot -p123456 --default-character-set=utf8 mould_check > C:\Users\Administrator\Desktop\test\mould_checktest.sql