表的导入导出

一、表的导出

有时需要将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行
原文地址:https://www.cnblogs.com/jkin/p/10150831.html