【问题标题】:inserting data into MYSQL tables by using shell script使用 shell 脚本将数据插入 MYSQL 表
【发布时间】:2013-12-16 11:13:09
【问题描述】:

我是 shell 脚本的初学者。我正在尝试将 LINUX 命令的输出存储在 MySQL 表中。我需要在一列中选择分区详细信息并在另一列中使用%。我几乎做到了,但我在单列中得到了输出。在表测试中,磁盘是一列,使用的是另一列。我想要的输出是

**DISK**            **USED**

filesystem            45%

但我的实际输出是这样的

**DISK  USED**

filesystem  
45%

我的代码:

df -h | tee /home/abcd/test/monitor.text;
details=$(awk '{ print $1 } ' monitor.text);
echo $details;
used=$(awk '{ print $5}' monitor.text);
echo $used;
mysql test<<EOF;
INSERT INTO test_1 (details,used) VALUES ('$details','$used');
EOF

请给我所需输出的正确代码。
提前谢谢你。

【问题讨论】:

  • 你的意思是你在输出中有两行,因为你有两个单独的echo 语句?如果是这样,请将它们替换为单个语句 (echo $details $used)。如果不是,请更清楚您所说的“输出”是什么意思。
  • 输出出现在单列中。不管输出是什么
  • 什么输出? df 的输出? awk 的输出?脚本的输出?数据库上SELECT 的输出?
  • 如果将INSERT中的单引号替换为双引号会怎样,即:INSERT INTO test_1 (details,used) VALUES ("$details","$used")
  • 好的。如果你使用INSERT INTO test_1 (details,used) VALUES ("Filesystem","45%")会发生什么?

标签: mysql shell unix awk


【解决方案1】:

这是一个脚本,可以很好地捕获这 2 列的值。您可以进行插入吗?

#!/bin/sh
df -h | awk '{ print$1 " "  $5} ' > monitor.txt
exec<monitor.txt
value=0
while read line
  do
     col1=`echo $line | cut -f1 -d " " `
     col2=`echo $line | cut -f2 -d " " `
     echo $col1
     echo $col2 ;
 done

在 do-done 循环中插入您的插入语句。

【讨论】:

  • 为什么要使用语句 exec
  • 有人可以帮我提供我需要的确切代码吗?我的要求: 1.我必须能够在命令中检查磁盘使用情况。 2. 我必须在表的一列中获取分区详细信息,并在表的下一列中获取等效的已用百分比。
  • 删除了参数并使其成为一个脚本(上图)。你应该可以从这里拿走它。
猜你喜欢
  • 1970-01-01
  • 2011-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-10
  • 2013-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多