gpt4 book ai didi

mysql - 将参数从 bash 传递到 mysql 脚本

转载 作者:行者123 更新时间:2023-11-29 13:39:00 25 4
gpt4 key购买 nike

我正在尝试将参数从 bash 脚本传递到 mysql 脚本。 bash 脚本是

#!/bin/bash
for file in `ls *.symbol`
do
path=/home/qz/$file
script='/home/qz/sqls/load_eval.sql'
mysql -u qz -h compute-0-10 -pabc -e "set @pred = '$path'; source $script;"
done

load_eval.sql 是

use biogrid;
load data local infile @pred into table lasp
fields terminated by ','
lines terminated by '\n'
(score, symbols);

运行 bash 脚本时,我收到错误消息:

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 '@pred into table lasp ..

参数@pred的值似乎没有传递到mysql脚本中。

最佳答案

MySQL 不支持 LOAD DATA INFILE 语句中的 session 变量。这已被认为是功能请求很长一段时间了 ( http://bugs.mysql.com/bug.php?id=39115 ),但该功能从未实现。

我建议使用mysqlimport而不是像您正在做的那样使用 mysql 执行复杂的步骤。文件的名称必须与表的名称匹配,但您可以使用符号链接(symbolic link)来欺骗它:

#!/bin/bash
for file in *.symbol
do
path="/home/qz/$file"
ln -s -f "$path" /tmp/lasp.txt
mysqlimport -u qz -h compute-0-10 -pabc \
--local --columns "score,symbols" /tmp/lasp.txt
done
rm -f /tmp/lasp.txt

PS:不需要使用`ls`。正如您在上面看到的,文件名扩展工作正常。

关于mysql - 将参数从 bash 传递到 mysql 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18369847/

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