从mysql中的表中检索图像,并在写入文件系统之前运行base64对其进行解码
我需要帮助。我被难住了 我试图从5个表中提取存储在blob中的最新图像,在将其保存为图像之前对其应用base64。下面是我的代码 我最初的问题是,我似乎无法将变量tableId传递到mysql查询中 表格名称为100001、100002、100003、100004、100005 表列与包含blob的“image”列和包含时间戳值的“Time”列相同从mysql中的表中检索图像,并在写入文件系统之前运行base64对其进行解码,mysql,bash,shell,base64,Mysql,Bash,Shell,Base64,我需要帮助。我被难住了 我试图从5个表中提取存储在blob中的最新图像,在将其保存为图像之前对其应用base64。下面是我的代码 我最初的问题是,我似乎无法将变量tableId传递到mysql查询中 表格名称为100001、100002、100003、100004、100005 表列与包含blob的“image”列和包含时间戳值的“Time”列相同 #!/bin/bash total=5 #value to increment the devices tablecount=100000
#!/bin/bash
total=5 #value to increment the devices
tablecount=100000
for ((i=1; i<=$total; i++))
do
tableId=$(($tablecount + $i))
echo ${image} | base64 -d > images/$tableID.jpg
done < <(echo "SELECT image, Time FROM table_'$tableID' ORDER BY Time DESC LIMIT 1;" | mysql mydb -u someuser -pPassword)
只需删除单引号,它们将阻止shell扩展文本。您还需要在循环内执行查询
for ((i=1; i<=$total; i++))
do
tableId=$(($tablecount + $i))
echo "SELECT image FROM table_$tableID ORDER BY Time DESC LIMIT 1;" | mysql -sN -u someuser -pPassword mydB | base64 -d > "file$tableId.jpg"
done
我还删除了time列,并确保mysql命令不会打印头或表
以下是回路部件的测试代码和结果:
$bash t.sh
按时间描述限制1从表_10001中选择图像;
按时间描述限制1从表_10002中选择图像;
按时间描述限制1从表_10003中选择图像;
按时间描述限制1从表_10004中选择图像;
按时间描述限制1从表_10005中选择图像;
$cat t.sh
总数=5
表计数=10000
对于i=1;谢谢你的帮助!但我仍然有一个问题。第1行出现错误1146 42S02:表“Table_”不存在警告:在命令行界面上使用密码可能不安全。第1行出现错误1146 42S02:表“Table_id_”不存在。我似乎无法获取变量。id部分来自何处?因为测试声音可以删除第一根管道后的所有内容,并用cat替换,然后您应该看到该段,还请确保使用一个外壳,我刚刚用bash确认它有效,请参见上文。我有个打字错误。对不起,谢谢!对不起,我是说最后一排。我正在尝试检索最新的图像块