# 将文本内容插入数据库

一般来说可以通过 sql 语句执行插入,但如果要插入一个文本特定的内容或者需要过滤等处理的内容就需要通过 shell 来操作了

例如:将 id 大于 1014 的数据插入特定表中

1010	jerry	1991-12-13	male
1011	mike	1991-12-13	female
1012	tracy	1991-12-13	male
1013	kobe	1991-12-13	male
1014	allen	1991-12-13	female
1015	curry	1991-12-13	male
1016	tom	1991-12-13	female
user=root
pwd=20052017

mysql_connect="mysql -u"$user" -p"$pwd""

cat data.txt | while read id name birth sex
do
	if [ $id -gt 1014 ];then
        # 注意这里面的变量要使用单引号,否则会被解析成id的数值
		$mysql_conn -e "INSERT INTO school.student values('$id','$name','$birth','$sex')"
	fi
done

当处理文本分隔符不同的时候

2025:hao:1989-12-21:male
2026:zhang:1989-12-21:male
2027:ouyang:1989-12-21:male
2028:li:1989-12-21:female
  • ⚠️ IFS 为管道符号的时候不能直接使用 mysql_conn 变量,要将 sql 语句直接写在里面
user="dbuser"
password="123456"
host="192.168.184.132"

mysql_conn="mysql -u'$user' -p'$password' -h'$host'"

IFS="|" # 根据文本变换

cat data-2.txt | while read id name birth sex
do
	mysql -u"$user" -p"$password" -h"$host" -e "INSERT INTO school.student2 values('$id','$name','$birth','$sex')"
done