一、表的导出
有时需要将MySQL数据库中的数据导出到外部存储文件中。MySQL可以导出SQL文件,XML文件,HTML文件。这些导出的文件也可以导入到mysql数据库中
1、使用select...into outfile filename 导出文本文件,NULL数据导出的结果时 N
select ..into outfile filename --optinons 选项 filelds terminated by 'value' # 设置字段间的分隔符,默认是制表符 fields [optionally] enclosed by 'value' # 设置字段的包围字符,用了optionally则只包围char和varchar。如使用双引号将导出的数据包围 fields escaped by 'value' # 设置转移字符,默认 lines starting by 'value' # 设置每行数据的开头字符,默认无 line terminated by 'valye' # 设置每行数据的结束字符,默认
2、导出报错:ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
该错误是不允许导出数据。show variables like '%secure%' 查看值为NULL。不允许导出数据。修改配置文件my.cnf。添加secure_file_priv = "/" 。代表可以导出到任意目录。
如果指定路径,则只允许在指定的路径下导出数据。。在写导出sql时没有指定绝对路径,会导出到data目录中的 ‘dbname’ 的文件夹下
select * from student into outfile '/home/backup/student.txt';
3、使用mysqldump命令导出文本文件
该工具不仅可以导出insert update等语句,还可以导出文件文件。mysqldump导出一个包含表结构的filename.sql文件和一个包含表数据的filename.txt文件,语法格式如下:
mysqldump -T path -u root -p dbname [tables] options --options选项 --fields-terminated-by=value # 设置分隔符 --filelds-enclosed-by=value # 设置字段的包围符 --fields-optionally-enclosed-by=value # 设置单个字段分隔符,只用于char varchar字段 --fields-escaped-by=value # 设置转移字符 --line-terminated-by=value # 设置每行数据的结尾符
例如:mysqldump -T /home/unload/ -u root -p txt student
4、使用mysql导出文本文件
如果mysql时单独的数据库服务器,用户在一个客户端上操作,想直接将导出的数据结果存放到客户端上。就可以通过mysql -e命令来操作
mysql -u root -p -e "select * from oldboy.student" > /home/unload/student.txt
mysql -u root -p --html -e "select * from oldboy.student" > /home/unload/student.html # 导入到html文件 --xml导入到xml文件
二、表的导入
mysql允许将数据导出为外部文件,也允许将外部文件导入到数据库。mysql提供了一些导入数据的工具。有load data语句,source命令,mysql命令。
1、使用load data infile方式导入文件,语法如下
load data infile filename.txt into table tabname [ignore numberlines] [ignore numberlines] 表示可以忽略文件开始处的行数 --optinons 选项 filelds terminated by 'value' # 设置字段间的分隔符,默认是制表符 fields [optionally] enclosed by 'value' # 设置字段的包围字符,用了optionally则只包围char和varchar。如使用双引号将导出的数据包围 fields escaped by 'value' # 设置转移字符,默认 lines starting by 'value' # 设置每行数据的开头字符,默认无 line terminated by 'valye' # 设置每行数据的结束字符,默认
例如:load data infile /home/unload/student.txt into table student;
2、使用mysqlimport命令导入文本文件,语法如下.。导入时文件名作为表名,但是表必须事先存在
mysqlimport -u root -p dbname filename.txt options --options选项 --fields-terminated-by=value # 设置分隔符 --filelds-enclosed-by=value # 设置字段的包围符 --fields-optionally-enclosed-by=value # 设置单个字段分隔符,只用于char varchar字段 --fields-escaped-by=value # 设置转移字符 --line-terminated-by=value # 设置每行数据的结尾符
--ignore-lines=n #忽略前n行