【问题标题】:MySQL loop statement over column with INTO OUTFILE unique name具有 INTO OUTFILE 唯一名称的列上的 MySQL 循环语句
【发布时间】:2021-02-12 22:02:55
【问题描述】:

我有一个只有几张表的数据库,但我们真的对两个很感兴趣。在第一个中,我有分配了 id 的数据。在第二个中,我选择了 id。 我要做的是在循环中运行一个语句,该语句将根据提供给语句的条件从第一个表中选择我感兴趣的内容。现在我想循环语句,所以在每次调用中,条件都是第二个表中的 id。此外,我希望将结果保存到名称与调用的 id 对应的文件中。 到目前为止,我有这个:

DELIMITER $$

CREATE PROCEDURE generateData(
    IN idNumber INT
)

BEGIN
    SELECT 
        id, 
        name, 
        d_year, 
        d_month,
        d_day,
        d_value   
    FROM d_dataframe 
    WHERE
        id = idNumber
    INTO OUTFILE "D:\\test.csv"
    CHARACTER SET utf-8
    FIELDS TERMINATED BY ';'
    ENCLOSED BY '"'
    LINES TERMINATED BY '\r\n';
    
END $$

DELIMITER ;

在上面的代码中,我需要一种方法来替换 INTO OUTFILE "D:\test.csv" 部分,所以当调用第二个表获取值时,比如说 101、102、103 来获取文件 101.csv, 102.csv,103.csv。我需要添加什么以及如何调用该循环?

提前致谢!

克里斯

【问题讨论】:

标签: mysql loops stored-procedures into-outfile


【解决方案1】:

正如 Akina 所说,使用准备好的语句

DELIMITER $$

CREATE PROCEDURE generateData(
    IN idNumber INT
)

BEGIN
SET @sql  = CONCAT('
    SELECT 
        id, 
        name, 
        d_year, 
        d_month,
        d_day,
        d_value   
    FROM d_dataframe 
    WHERE
        id = ',idNumber,'
    INTO OUTFILE "D:\\test',idNumber,'.csv"
    CHARACTER SET utf8
    FIELDS TERMINATED BY \';\'
    ENCLOSED BY \'\\"\'
    LINES TERMINATED BY \'\\r\\n\';');
    PREPARE stmt1 FROM @sql;
    EXECUTE stmt1;
    DEALLOCATE PREPARE stmt1;
END $$

DELIMITER ;

【讨论】:

  • 谢谢,这解决了问题
猜你喜欢
  • 1970-01-01
  • 2020-09-09
  • 2017-12-13
  • 2021-10-08
  • 2011-02-21
  • 1970-01-01
  • 1970-01-01
  • 2014-04-11
  • 1970-01-01
相关资源
最近更新 更多