mysql - 使用当天的mysql创建CSV文件

标签 mysql csv into-outfile

如何将数据从 mysql 导出到包含日期和时间的文件 csv。我尝试了这段代码,但出现错误

SELECT *
FROM order
INTO OUTFILE '/tmp/',NOW(),'_orders.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';

这里是我的错误

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"' ,NOW(), '"'_orders.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TER' at line 3

这是我的事件工作很棒,但我希望每个月底都有不同的简历

CREATE DEFINER = `admin`@`localhost` EVENT `Order` 
ON SCHEDULE EVERY1 MONTH STARTS '2018-12-01 00:00:00' 
ON COMPLETION NOT PRESERVE ENABLE 
COMMENT 'Order save' 
DO SELECT *
FROM Order
INTO OUTFILE '/tmp/_orders.csv'

这里查询获取名称和日期,但我不能在事件中添加这个

SET @`outfull` := CONCAT('/tmp/', NOW(), 'orders.csv');
SET @`qry` := CONCAT('SELECT * 
                        INTO OUTFILE \'', @`outfull`, '\' 
                        FIELDS TERMINATED BY \';\' 
                        ENCLOSED BY \'"\' 
                        LINES TERMINATED BY \'\n\' 
                      FROM `order`');

PREPARE `stmt` FROM @`qry`;
SET @`qry` := NULL;
EXECUTE `stmt`;
DEALLOCATE PREPARE `stmt`;

最佳答案

尝试准备好的语句:

set @sql = concat('SELECT *
FROM tradooITLangues 
INTO OUTFILE ', concat('\'', '/tmp/', NOW(), '_orders.csv', '\''),
' FIELDS TERMINATED BY \',\'
ENCLOSED BY \'"\'
LINES TERMINATED BY \'#\n\';');

PREPARE stmt1 FROM @sql;
EXECUTE stmt1; 
DEALLOCATE PREPARE stmt1; 

在一个事件中(我的 MySQL 接受了语法):

delimiter $$
CREATE DEFINER = `admin`@`localhost` EVENT `Order` 
ON SCHEDULE EVERY 1 MONTH STARTS '2018-12-01 00:00:00' 
ON COMPLETION NOT PRESERVE ENABLE 
COMMENT 'Order save' 
DO
BEGIN

    SET @`outfull` := CONCAT('/tmp/', NOW(), 'orders.csv');
    SET @`qry` := CONCAT('SELECT * 
                            INTO OUTFILE \'', @`outfull`, '\' 
                            FIELDS TERMINATED BY \';\' 
                            ENCLOSED BY \'"\' 
                            LINES TERMINATED BY \'\n\' 
                          FROM `order`');

    PREPARE `stmt` FROM @`qry`;
    SET @`qry` := NULL;
    EXECUTE `stmt`;
    DEALLOCATE PREPARE `stmt`;

END;
$$

关于mysql - 使用当天的mysql创建CSV文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53229433/

相关文章:

javascript - 使用 JavaScript 添加复选框值 PHP、MySQL 和警报框

python - 使用 Python 将纯文本文件解析为 CSV 文件

python - Scrapy 已完成运行,结果显示在控制台中,但 CSV 输出仍为空白

php - 如何计算当前行数

php - 使用 MySQL 数据库中的计数填充列表 PHP

mysql - 使用准备和执行

MySQL INTO OUTFILE 错误?

MySQL:可选地包含在 '"' 中断 INTO OUTFILE 变量名

mysql - 如何从选择命令 mySQL 中组合 JSON_OBJECTS

c - 在 C 中读取 .CSV 文件