gpt4 book ai didi

mysql - 使用 txt 文件和 bash 脚本填充 MySQL 表

转载 作者:行者123 更新时间:2023-11-29 00:41:48 25 4
gpt4 key购买 nike

我正在尝试编写一个 bash 脚本,它将获取一个文本文件并使用其内容来填充 MySQL 表。

文本文件包含许多我需要添加到表中的条目。

文本文件内容示例:

Firstname=bob
Surname=ross
Age=9
Firstname=gary
Surname=graeme
Age=19
Firstname=henry
Surname=harry
Age=23

文本文件的结构与上面的示例类似,相同的 3 个变量不断为将进入 mysql 表的每个唯一条目分配新值。

我已经使用 sed 删除了文本文件中我不想处理的所有空行和以“#”开头的行。

我的问题是如何使用 bash 使用文本文件中的内容每三行插入一个 sql 以生成 mysql 查询。我知道我需要一次遍历文件 3 行,直到到达文本文件的末尾,然后以某种方式解析“=”之后的每个值并将其分配给循环迭代中的变量以插入 mysql 数据,但我不确定如何执行此操作。

我知道我需要每 3 行有一个新的表格条目。

echo "INSERT INTO $table (Firstname, Surname, Age) VALUES ('$Firstname', '$Surname', '$age');" | mysql $db

谢谢

最佳答案

我在 = 上拆分输入中的每一行并使用第二部分。
然后我将其通过管道传输到 while 循环,在该循环中我使用 read fname sname age 来填充循环内的变量。我使用 NR % 3==0 {print("")} 每三行在输出中引入一个换行符。

awk -F"=" '{printf("%s ", $2)}; NR % 3==0 {print("")}' input_file | \
while read fname sname age; do
echo "INSERT INTO $table (Firstname, Surname, Age)
VALUES ('$fname', '$sname', '$age');" | mysql $db
done

更新:
输入:

Firstname=bob
Surname=ross
Age=9
Activity=1 2 3 4 5
Firstname=gary
Surname=graeme
Age=19
Activity=1 2 3 4 5
Firstname=henry
Surname=harry
Age=23
Activity=1 2 3 4 5

使用此代码:

awk -F"=" '{printf("%s ", $2)}; NR % 4==0 {print("")}' input | \
while read fname sname age act; do
echo "'$fname', '$sname', '$age', '$act');"
done

给出:

'bob', 'ross', '9', '1 2 3 4 5');
'gary', 'graeme', '19', '1 2 3 4 5');
'henry', 'harry', '23', '1 2 3 4 5');

关于mysql - 使用 txt 文件和 bash 脚本填充 MySQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11952662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com