MySQL 在具有 INTO OUTFILE 唯一名称的列上循环语句

MySQL loop statement over column with INTO OUTFILE unique name

我有一个数据库 table 很少,但我们真的对两个感兴趣。在第一个中,我有分配了 id 的数据。在第二个中,我选择了 id。 我想要做的是 运行 在循环语句中 select 根据提供给语句的条件从第一个 table 开始我感兴趣的内容。现在我想循环语句,所以在每次调用中,条件都是来自第二个 table 的 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" 部分,所以当调用第二个 table 的值时,假设 101、102、103 , 以获取文件 101.csv、102.csv、103.csv。我需要添加什么以及如何调用该循环?

提前致谢!

克里斯

正如 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 ;