前端打包

This commit is contained in:
2025-11-24 16:53:17 +08:00
parent df57d05817
commit b51faf731a
10 changed files with 218 additions and 385 deletions

View File

@@ -93,70 +93,34 @@ echo ""
log_info "开始导入敏感词..."
START_TIME=$(date +%s)
# 创建临时SQL文件
TEMP_SQL=$(mktemp)
trap "rm -f ${TEMP_SQL}" EXIT
# 预处理转义单引号生成临时词表文件仅一列word
TEMP_WORDS=$(mktemp)
trap "rm -f ${TEMP_WORDS}" EXIT
sed "s/'/''/g" "${DICT_FILE}" > "${TEMP_WORDS}"
# 生成SQL语句
log_info "生成SQL语句..."
cat > "${TEMP_SQL}" <<EOF
-- 敏感词批量导入
USE ${DB_NAME};
-- 设置字符集
# 使用 LOAD DATA LOCAL INFILE 批量导入,极大提升导入性能
log_info "使用 LOAD DATA LOCAL INFILE 批量导入敏感词..."
if mysql --local-infile=1 -h"${DB_HOST}" -P"${DB_PORT}" -u"${DB_USER}" -p"${DB_PASSWORD}" "${DB_NAME}" <<EOF
SET NAMES utf8mb4;
-- 清除现有的deny类型敏感词
-- 清除现有的 deny 类型敏感词
DELETE FROM tb_sensitive_word WHERE type = 'deny';
-- 批量入敏感词
INSERT INTO tb_sensitive_word (word, type) VALUES
-- 从预处理文件批量入敏感词LOCAL 由客户端读取,避免 secure-file-priv 限制)
LOAD DATA LOCAL INFILE '${TEMP_WORDS}'
INTO TABLE tb_sensitive_word
CHARACTER SET utf8mb4
LINES TERMINATED BY '\n'
(word)
SET type = 'deny';
EOF
# 读取敏感词并生成INSERT语句
COUNTER=0
while IFS= read -r word || [ -n "$word" ]; do
# 跳过空行
[ -z "$word" ] && continue
# 转义单引号
word=$(echo "$word" | sed "s/'/''/g")
COUNTER=$((COUNTER + 1))
# 添加到SQL最后一个不加逗号
if [ $COUNTER -eq ${TOTAL_WORDS} ]; then
echo "('${word}', 'deny');" >> "${TEMP_SQL}"
else
echo "('${word}', 'deny')," >> "${TEMP_SQL}"
fi
# 进度提示每1000个
if [ $((COUNTER % 1000)) -eq 0 ]; then
log_info "已处理 ${COUNTER}/${TOTAL_WORDS} 个敏感词..."
fi
done < "${DICT_FILE}"
# 添加查询语句
cat >> "${TEMP_SQL}" <<EOF
-- 验证导入结果
SELECT COUNT(*) AS '导入数量' FROM tb_sensitive_word WHERE type = 'deny';
EOF
log_info "SQL语句生成完成${COUNTER}个敏感词)"
echo ""
# 执行SQL
log_info "执行数据库导入..."
if mysql -h"${DB_HOST}" -P"${DB_PORT}" -u"${DB_USER}" -p"${DB_PASSWORD}" < "${TEMP_SQL}"; then
then
END_TIME=$(date +%s)
DURATION=$((END_TIME - START_TIME))
echo ""
echo "=================================================="
log_info "导入完成!"
log_info "成功导入: ${COUNTER} 个敏感词"
log_info "成功导入: ${TOTAL_WORDS} 个敏感词(基于文件统计)"
log_info "耗时: ${DURATION}"
echo "=================================================="
else
@@ -172,10 +136,10 @@ IMPORTED_COUNT=$(mysql -h"${DB_HOST}" -P"${DB_PORT}" -u"${DB_USER}" -p"${DB_PASS
echo ""
log_info "数据库中当前有 ${IMPORTED_COUNT} 个 deny 类型敏感词"
if [ "${IMPORTED_COUNT}" -eq "${COUNTER}" ]; then
if [ "${IMPORTED_COUNT}" -eq "${TOTAL_WORDS}" ]; then
log_info "✅ 验证通过:导入数量与预期一致"
else
log_warn "⚠️ 导入数量不匹配:预期 ${COUNTER},实际 ${IMPORTED_COUNT}"
log_warn "⚠️ 导入数量不匹配:预期 ${TOTAL_WORDS},实际 ${IMPORTED_COUNT}"
fi
echo ""