mysql - 如何将 mysql SELECT 读入 bash 变量,然后使用这些变量 INSERT INTO 不同的表

标签 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

我也想要这样的东西 插入该表,其中(我刚刚加载了信息)日期=今天 但是因为会有多个日期,我该怎么做,是的,这一切都需要可以 bash 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]}

关于mysql - 如何将 mysql SELECT 读入 bash 变量,然后使用这些变量 INSERT INTO 不同的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31790629/

相关文章:

mySQL更新查询

MySQL:从坐标字符串创建多边形几何图形

php - 从标签列中的每个项目创建 div

mysql - 添加没有外键约束的索引性能提升

php - Mysql php计算两个表的总价

ruby - 如何合并 Heroku 上具有相同架构的两个数据库?

php - laravel 4 自定义命名密码列

bash - 将多个剪切命令组合成变量赋值到一个剪切命令中

linux - Shell 变量扩展 - 使用 env 调用实用程序时的间接寻址

linux - 如何在 linux 中打开程序时运行 bash 脚本