📅  最后修改于: 2023-12-03 15:03:06.197000             🧑  作者: Mango
在 MySQL 中,OUTFILE 关键字用于将查询结果输出到文件中。通过使用 OUTFILE,可以将结果以 CSV 或者类似于标准 SQL 导出的格式导出到文件中。
使用样例:
SELECT column1, column2, column3
FROM table1
INTO OUTFILE '/path/to/output/file.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';
SELECT column1, column2, column3
:查询的列名,用于将指定列的值写入到外部文件中。FROM table1
:查询的表名。INTO OUTFILE '/path/to/output/file.csv'
:将查询结果导出到指定的输出文件中。FIELDS TERMINATED BY ','
:定义分隔符为逗号。ENCLOSED BY '"'
:定义每一条记录的围栏为双引号,避免记录中的逗号被误解。LINES TERMINATED BY '\n'
:定义每一行记录的结束符为换行符。使用 OUTFILE 导出 CSV 文件时,在文件中不包含列名的设置。如果需要在输出的 CSV 文件中包含列名,则可以采用以下两种方法:
SELECT 'column1', 'column2', 'column3'
UNION ALL
SELECT column1, column2, column3
FROM table1
INTO OUTFILE '/path/to/output/file.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';
该方法的缺点在于需要在查询中定义两次相同的查询逻辑。
在 MySQL 中,通过使用管道方式将结果发送到 sed 命令中,可以在输出的 CSV 文件的顶部插入列名。
SELECT column1, column2, column3
FROM table1
INTO OUTFILE '/path/to/output/file.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';
$ sed -i '1s/^/column1,column2,column3\n/' /path/to/output/file.csv
--secure-file-priv
设置为指定的目录,以允许 MySQL 从选择的文件目录中读取文件,可以通过在 my.cnf 配置文件中指定用户能够访问的目录来实现。