脚本如何批量转换字段内容

wen 实用脚本 28

本文目录导读:

脚本如何批量转换字段内容

  1. Python脚本(最灵活通用)
  2. Shell脚本(Linux/Mac环境)
  3. SQL脚本(数据库批量处理)
  4. 使用jq处理JSON字段
  5. Node.js脚本(Web开发者常用)
  6. 实际应用场景示例
  7. 选择建议

的批量转换,脚本的选择取决于你的具体场景(如数据库、CSV文件、Excel等),以下是几种常见的批量转换脚本方案:

Python脚本(最灵活通用)

处理CSV/Excel文件

import pandas as pd
# 读取文件
df = pd.read_csv('input.csv')
# 批量转换某列:将日期格式统一
df['date'] = pd.to_datetime(df['date']).dt.strftime('%Y-%m-%d')
# 批量替换内容
df['status'] = df['status'].replace({
    'pending': '待处理',
    'completed': '已完成',
    'failed': '失败'
})
# 批量大小写转换
df['name'] = df['name'].str.upper()  # 转大写
# df['name'] = df['name'].str.lower()  # 转小写
# 保存结果
df.to_csv('output.csv', index=False)

处理数据库字段

import sqlite3
conn = sqlite3.connect('database.db')
cursor = conn.cursor()
# 批量更新字段内容
cursor.execute("""
    UPDATE users 
    SET email = LOWER(email), 
        status = CASE status 
            WHEN 'active' THEN '活跃' 
            WHEN 'inactive' THEN '不活跃' 
        END
""")
conn.commit()
conn.close()

Shell脚本(Linux/Mac环境)

使用sed批量替换

# 替换CSV中所有行的第3列
sed -i 's/,old_value,/,new_value,/g' file.csv
# 批量转换大小写
cat file.txt | tr 'a-z' 'A-Z' > output.txt

使用awk处理字段

# 将第2列转换为大写
awk -F',' '{$2=toupper($2); print}' OFS=',' file.csv > output.csv
# 条件替换
awk -F',' '{if($3=="old") $3="new"; print}' OFS=',' file.csv

SQL脚本(数据库批量处理)

-- 批量替换内容
UPDATE products 
SET category = REPLACE(category, 'Electronics', '电子');
-- 批量大小写转换
UPDATE users 
SET username = UPPER(username);
-- 带条件的批量更新
UPDATE orders 
SET status = CASE 
    WHEN order_date < '2023-01-01' THEN '历史订单'
    WHEN status = 'pending' THEN '待发货'
    ELSE status 
END;
-- 数值转换(如将美元转为人民币)
UPDATE products 
SET price = price * 6.8 
WHERE currency = 'USD';

使用jq处理JSON字段

# 转换JSON中所有值的类型
cat data.json | jq 'map(.age |= tonumber)' > output.json
# 批量重命名字段
cat data.json | jq 'map(.fullname = .name | del(.name))' > output.json

Node.js脚本(Web开发者常用)

const fs = require('fs');
// 读取JSON文件并批量转换
let data = JSON.parse(fs.readFileSync('input.json', 'utf8'));
data = data.map(item => ({
    ...item,
    date: new Date(item.date).toISOString().split('T')[0],
    price: Math.round(item.price * 100) / 100
}));
fs.writeFileSync('output.json', JSON.stringify(data, null, 2));

实际应用场景示例

场景1:Excel中的日期格式统一

import pandas as pd
# 假设日期列有多种格式,统一为YYYY-MM-DD
df['date'] = pd.to_datetime(df['date'], errors='coerce').dt.strftime('%Y-%m-%d')

场景2:数据库中的手机号脱敏

UPDATE users 
SET phone = CONCAT(LEFT(phone, 3), '****', RIGHT(phone, 4))
WHERE LENGTH(phone) = 11;

场景3:批量编码转换(如GBK转UTF-8)

# 批量转换文件编码
find . -name "*.csv" -exec iconv -f GBK -t UTF-8 {} -o {}.utf8 \;

选择建议

场景 推荐工具 原因
简单替换 sed/awk 单行命令,快速
复杂逻辑 Python 灵活性最高
数据库操作 SQL 原生支持,性能好
JSON处理 jq 专门处理JSON
Web项目 Node.js 和前端生态一致

如果你能提供更具体的使用场景(如:处理什么格式的数据、需要什么类型的转换、数据量大小等),我可以给出更精准的脚本方案。

抱歉,评论功能暂时关闭!