一.文件导入到数据库中
MySQL 提供了load data infile语句来将文件中的数据插入到数据库中,这里的文件可以是csv也可是其他格式。
mysql> load data local infile '..../test.csv' into table mytable fields terminated by ',' lines terminated by '\n';
- 如果指定LOCAL关键词,则表明从客户主机上按路径读取文件。如果没有指定,则文件在服务器上按路径读取文件。
- 可以使用 fields明确地在语句中指出列的分隔符(默认定位符),使用 lines指出行分隔符(默认是换行符)。
- 两个命令的fields和 lines子句的语法是一样的。两个子句都是可选的,但是如果两个同时被指定,fields 子句必须出现在lines子句之前。
- 如果用户指定一个 fields 子句,它的子句 (terminated by、enclosed by 和 escaped by) 也是可选的,不过,用户必须至少指定它们中的一个。terminated by描述字段的分隔符(默认'\t'),enclosed by描述的是字段的括起字符,escaped by描述的转义字符(默认'\ ') 。
- 文件test.csv中的列的数目,必须与要导入的表mytable的列数目一直。默认是按文件中列的存储顺序插入表中,如果要指定顺序,则可以在表名后面注明mytable(col1,col2,……)
值得注意的问题:
- Mysql中的目录分隔符是 ' / ',而不是 ' \ '。
- csv文件是以英文逗号 ' , '作为列分隔符,换行符' \n '作为行分隔符。
- Mysql在5.7版本以后,由于安全问题,必须从指定文件夹secure_file_priv导入数据,所有我们要把文件拷贝到指定文件夹中。那么如何查找这个指定文件夹呢?这里使用
mysql> show variables like '%secure%';
找到文件夹后,将文件拷贝进去,再导入即可。
二.从数据库中导出到文件
从数据库中导出到文件比较简单,要注意的是只能导出到mysql的secure_file_priv文件夹。
mysql> select * from mytable into outfile '..../test.csv ' fields terminated by ',' lines terminated by '\n';
这个命令可以分成两部分,前半部分是sql语句,select from where从数据库中筛选出要导出的数据;第二部分是存入文件。