mysql 大数据进行导出成csv文件
作者:互联网
我们先看一下对比
直接navicat进行数据查找
Mysql服务中直接导出
直接在数据库服务器上将数据导出成固定文件,并指定格式,gbk格式是可以被csv文件识别的,不会乱码 默认不加格式是utf-8的
SELECT * FROM waybill where created >='2020-11-01' and created <'2020-12-01' INTO OUTFILE '/var/lib/mysql-files/11month.csv' character set gbk FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' ;
如果导出来的文件太大,EXCEL打不开,EXCEL最高支持一百零几万的数据打开,超过的会被舍弃,这里可以用命令进行拆分成多个文件
Linux split命令用于将一个文件分割成数个。
该指令将大文件分割成较小的文件,在默认情况下将按照每1000行切割成一个小文件。
split -50000 11month.csv
这样会把这个文件按照每五万行拆成一个文件,xaa,xab这样的文件,可以自己给后缀名。
遇到的问题及解决
mysql> SELECT * FROM config_value INTO OUTFILE '/tmp/runoob.txt' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n';
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
这需要看一下mysql 是否允许你自定义文件存储,不允许就按照它指定的目录存储即可 为null即表示你可以随意存储
SHOW VARIABLES LIKE "secure_file_priv";
将切割后的文件,即可从服务器上down下来
扩展
使用 SELECT ... INTO OUTFILE 语句导出数据
以下实例中我们将数据表 runoob_tbl 数据导出到 /tmp/runoob.txt 文件中:
mysql> SELECT * FROM runoob_tbl
-> INTO OUTFILE '/tmp/runoob.txt';
你可以通过命令选项来设置数据输出的指定格式,以下实例为导出 CSV 格式:
mysql> SELECT * FROM passwd INTO OUTFILE '/tmp/runoob.txt'
-> FIELDS TERMINATED BY ',' ENCLOSED BY '"'
-> LINES TERMINATED BY '\r\n';
在下面的例子中,生成一个文件,各值用逗号隔开。这种格式可以被许多程序使用。
SELECT a,b,a+b INTO OUTFILE '/tmp/result.text'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM test_table;
SELECT ... INTO OUTFILE 语句有以下属性:
LOAD DATA INFILE是SELECT ... INTO OUTFILE的逆操作,SELECT句法。为了将一个数据库的数据写入一个文件,使用SELECT ... INTO OUTFILE,为了将文件读回数据库,使用LOAD DATA INFILE。
SELECT...INTO OUTFILE 'file_name'形式的SELECT可以把被选择的行写入一个文件中。该文件被创建到服务器主机上,因此您必须拥有FILE权限,才能使用此语法。
输出不能是一个已存在的文件。防止文件数据被篡改。
你需要有一个登陆服务器的账号来检索文件。否则 SELECT ... INTO OUTFILE 不会起任何作用。
在UNIX中,该文件被创建后是可读的,权限由MySQL服务器所拥有。这意味着,虽然你就可以读取该文件,但可能无法将其删除。
标签:文件,...,INTO,runoob,导出,OUTFILE,mysql,csv,SELECT 来源: https://www.cnblogs.com/brightgreat/p/14663336.html