gpt4 book ai didi

mysql 批处理 Linux 编程

转载 作者:行者123 更新时间:2023-11-30 01:19:01 25 4
gpt4 key购买 nike

我有一个名为 my_table 的表,其中包含 hash_value、file_name、file_contents 和 id 行。

我有一个程序接受用户的哈希值。

我想采用这个值并创建一个 mysql 批处理,将文件转储到 file_name

我可以创建一个批处理来使用转储文件内容

SELECT file_contents INTO DUMPFILE 'myfilename' FROM my_table WHERE hash_value='myhashvalue';

但我无法找到一种方法来首先获取 file_name 并在命令中使用它。我还想要一种方法让我的程序知道批处理是否失败以及原因(表中没有这样的哈希,文件已存在等)

伪代码

@file_name = SELECT file_name FROM my_table WHERE hash_value='myhashvalue';
if @file_name is not empty
SELECT file_contents INTO DUMPFILE @file_name FROM my_table WHERE hash_value='myhashvalue';
// if file exists already then the error gets sent to stdout so I can determine that
else
echo something to stdout so I know the user entered a value not in the table
endif

我按以下方式运行该批处理

mysql -h localhost -u theuser -pthepassword mydatabase < mybatch.sql

谢谢

编辑:我越来越近了。我可以使用

设置文件名

SELECT @filename:=file_name FROM my_table WHERE hash_value='myhahsvalue';

但是当我尝试在下一个语句中使用它时出现错误从 my_table WHERE hash_value='myhashvalue' 中选择 file_contents INTO DUMPFILE @filename;

结果您的 SQL 语法有错误;

编辑2:我现在可以使用它获取文件名(如果它基于哈希存在)。我仍在研究错误报告部分,但这效果很好

SELECT @filename:=file_name FROM my_table WHERE hash_value='myhashvalue';
SET @query:=CONCAT("SELECT file_contents INTO DUMPFILE '",@filename,"' FROM mytable WHERE hash_value='myhashvalue'");
PREPARE stmt FROM @query;
EXECUTE stmt;

最佳答案

我不是“最好”的解决方案,但只是添加了 --verbose,然后在末尾添加了 2>&1 将 stderr 重定向到 stdout。然后可以解析文本中的错误代码。ERROR 1064 如果输入无效的哈希值,mysql 执行失败如果文件已存在,则错误 1086感谢您的浏览

关于mysql 批处理 Linux 编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18765511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com