如何将Shell脚本的输出输入MySQL数据库?

时间:2019-02-17 22:32:12

标签: mysql bash shell

执行时,我有一个名为script.sh的shell脚本,我收到以下输出,即产品名称和价格。 (商品名称与其下方的价格相对应)

int main(void) {
    int ch;
    int flag = 0;
    while ((ch = getchar()) != EOF && c != '#') {
        if (isalpha(ch)) {
            printf("%c : %d\t", ch, ch);
            flag++;
            if ((flag % 8) == 0)
                printf("\n");
        }
    }
    return 0;
}

每次执行脚本时,它可能包含不同数量的项目。我创建了一个名为prices的数据库,其中包含一个名为prices的表以及两列“ itemName”和“ Price”。

我需要一个脚本,该脚本会将值添加到数据库中,因此数据库应包含:

Item1
1.00
Item2
4.00
Item3
3.49

我需要一个可以通过cron作业运行的脚本,该脚本可以在价格变化时更新价格。

我该如何实现?

2 个答案:

答案 0 :(得分:1)

创建文本文件:

cat > itemprice.txt

Item1
1.00
Item2
4.00
Item3
3.49

创建MySQL表:

mysql> create table itemprice (item varchar(10), price numeric(9,2));

使用LOAD DATA INFILE将文件加载到表中:

mysql> load data local infile 'itemprice.txt' 
  into table itemprice 
  fields terminated by '\n' 
  (item, price);

mysql> select * from itemprice;
+-------+-------+
| name  | price |
+-------+-------+
| Item1 |  1.00 |
| Item2 |  4.00 |
| Item3 |  3.49 |
+-------+-------+

或者,您也可以使用等效的mysqlimport命令(为您运行LOAD DATA INFILE)执行相同的操作:

mysqlimport --local --fields-terminated-by='\n' mydatabase itemprice.txt 

它导入的表与您导入的文件名匹配。

阅读我链接的文档,以获取有关使用LOAD DATA INFILE或mysqlimport的更多详细信息。

答案 1 :(得分:0)

您可以考虑使用TextInputEditTextCustomMatchers.withHint("My Hint")

首先创建临时表tmp_items

LOAD DATA INFILE

然后加载数据

CREATE TEMPORARY TABLE tmp_items LIKE items;

将数据合并到源表之后

LOAD DATA LOCAL INFILE 'your_file.txt'
INTO TABLE tmp_items
FIELDS TERMINATED BY '\n'
(name, price);

并删除临时表

INSERT INTO items
SELECT * FROM tmp_items
ON DUPLICATE KEY UPDATE price = VALUES(price);

请注意,两个表都必须具有PK(身份)列。