如何读取mysql SELECT到bash变量,然后使用这些变量INSERT到另一个表



我是新手,所以请耐心等待,我对bash的理解是,我可以运行

mysql --host=hostname --user=username --password=password -e "SELECT * FROM database.table;"

但是我从其他手册中几乎不知道如何将它们放入实际的bash变量中有人提到使用

read a b c
    do while 
    echo "..${a}..${b}..${c}.."

,但我不明白如何将它们读入变量?

同样在读取变量的时候我会做一些类似

的事情
#>WGET $a

然后再次登录mysql,并执行如下操作

LOAD DATA INFILE data.csv INTO thattable ON DUPLICATE UPDATE

我也想这样的东西插入到表WHERE(我刚刚加载了信息)日期=今天但是因为会有多个日期我怎么做,是的,这都需要可bash-able php太慢,我想避免使用C,除非这是唯一的方法,

谢谢我知道这是很多!

aw

选项1

使用"select…"G",将结果存储在tmp文件中,并将列存储在grep文件中。

由例子:

mytmp=$(mktemp /tmp/mytemp.XXXXXX)
mysql --host=hostname --user=username --password=password -e "SELECT * FROM database.table G;" > $mytmp
column_foo=$( fgrep COLUMN_FOO $mytmp | cut -d ':' -f2-)
column_bar=$( fgrep COLUMN_BAR $mytmp | cut -d ':' -f2-)
echo $column_foo
echo $column_bar

选项2

如果列数很高,将它们全部存储在散列数组中:

mytmp=$(mktemp /tmp/mytemp.XXXXXX)
mysql --host=hostname --user=username --password=password -e "SELECT * FROM database.table G;" | xargs -I{} echo {} > $mytmp
declare -A a
while IFS=':' read k s; do a[$k]=$s; done < $mytmp
echo ${a[COLUMN_FOO]}
echo ${a[COLUMN_BAR]}

相关内容