多线程写入数据库的 Shell 脚本
实现一个多线程写数据库的shell脚本可以使用bash shell中的'&'符号来创建并行进程。下面是一个示例脚本,用于同时向数据库中插入多个数据。
#!/bin/bash
# 数据库连接信息
DB_HOST='localhost'
DB_USER='username'
DB_PASSWORD='password'
DB_NAME='database'
# 并行进程数
NUM_THREADS=4
# 数据列表
DATA_LIST=(
'data1'
'data2'
'data3'
'data4'
'data5'
)
# 多线程函数
function insert_data() {
# 循环插入数据
for data in "${@}"; do
# 执行数据库插入语句
mysql -h"$DB_HOST" -u"$DB_USER" -p"$DB_PASSWORD" -D "$DB_NAME" -e "INSERT INTO table_name(data) VALUES ('$data');"
done
}
# 计算每个线程需要处理的数据量
total_data=${#DATA_LIST[@]}
data_per_thread=$((total_data / NUM_THREADS))
# 创建并行进程
for ((i=0; i<NUM_THREADS; i++)); do
# 计算当前线程需要处理的数据索引范围
start_index=$((i * data_per_thread))
end_index=$((start_index + data_per_thread))
# 提取当前线程需要处理的数据
thread_data=("${DATA_LIST[@]:$start_index:$end_index}")
# 调用多线程函数,并传入当前线程需要处理的数据
insert_data "${thread_data[@]}" &
done
# 等待所有并行进程执行完毕
wait
# 输出完成信息
echo "数据插入完成。"
请注意,上述脚本中的'DB_HOST'、'DB_USER'、'DB_PASSWORD'和'DB_NAME'变量需要根据实际情况进行修改,以便与数据库连接信息匹配。另外,'DATA_LIST'变量中的数据列表可以根据实际需求进行修改。
原文地址: https://www.cveoy.top/t/topic/o33W 著作权归作者所有。请勿转载和采集!