HOWTO将mysql SELECT读入bash变量,然后将这些变量用于INSERT INTO不同的表

时间:2015-08-03 15:02:03

标签: mysql database bash

我对此很新,所以请耐心等待,但我对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

我也想要这样的东西     INSERT INTO thattable WHERE(我刚刚加载了信息)date = today 但是因为会有多个日期我该怎么做,是的,这一切都需要是bash-able php太慢而C我想避免,除非它是唯一的方式,

谢谢,我知道这很多!

-aw

1 个答案:

答案 0 :(得分:0)

选项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]}