You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux环境下CSV转指定JSON格式并生成百万条记录的方法咨询

Linux环境下CSV转目标JSON并批量生成100万条记录实现方案

1. 现有sample1.txt转换为目标JSON格式

直接使用Linux原生awk工具即可完成转换,无需额外安装依赖,处理效率极高:

awk -F ',' '
{
    # 去除每个字段的双引号、前后空格
    gsub(/^[ "]+|[ "]+$/, "", $1)
    gsub(/^[ "]+|[ "]+$/, "", $2)
    gsub(/^[ "]+|[ "]+$/, "", $3)
    gsub(/^[ "]+|[ "]+$/, "", $4)
    # 拼接基础JSON结构
    json_str = sprintf("{\"id\":\"%s\",\"role\":\"%s\",\"created_time_stamp\":\"%s\"", $1, $2, $3)
    # 第四字段非空则追加q_id字段
    if ($4 != "") {
        json_str = json_str sprintf(",\"q_id\":\"%s\"", $4)
    }
    # 闭合JSON结构并输出
    print json_str "}"
}' sample1.txt

执行后输出结果完全匹配你提供的目标格式。

2. 批量生成100万条符合格式的记录

根据需求不同有两种实现方案:

方案1:基于现有4条样例循环复制生成

如果不需要全新随机数据,仅需要现有格式重复即可,执行以下命令几秒即可完成:

# 先将现有4条转换为模板文件
awk -F ',' '
{
    gsub(/^[ "]+|[ "]+$/, "", $1)
    gsub(/^[ "]+|[ "]+$/, "", $2)
    gsub(/^[ "]+|[ "]+$/, "", $3)
    gsub(/^[ "]+|[ "]+$/, "", $4)
    json_str = sprintf("{\"id\":\"%s\",\"role\":\"%s\",\"created_time_stamp\":\"%s\"", $1, $2, $3)
    if ($4 != "") {
        json_str = json_str sprintf(",\"q_id\":\"%s\"", $4)
    }
    print json_str "}"
}' sample1.txt > template.jsonl

# 循环复制25万次得到100万条记录(4*250000=1000000)
yes "$(<template.jsonl)" | head -n 250000 > output_1m.jsonl

生成完成后可执行wc -l output_1m.jsonl校验行数是否为100万。

方案2:生成100万条不重复的随机新记录

如果需要每条都是全新的符合格式的记录,可使用以下脚本,100万条生成耗时在10秒以内:

awk -v count=1000000 '
BEGIN {
    # 预设角色可选值
    roles[1] = "FS_SE"
    roles[2] = "FS_MG"
    roles[3] = "FS_TC"
    roles[4] = "FS_SP"
    # 预设月份缩写
    months[1] = "JAN"; months[2] = "FEB"; months[3] = "MAR"; months[4] = "APR"
    months[5] = "MAY"; months[6] = "JUN"; months[7] = "JUL"; months[8] = "AUG"
    months[9] = "SEP"; months[10] = "OCT"; months[11] = "NOV"; months[12] = "DEC"
    # 循环生成指定条数记录
    for (i=0; i<count; i++) {
        # 生成随机id:小写字母+3位数字
        id = sprintf("%c%03d", 97 + int(rand()*26), int(rand()*1000))
        # 随机选择角色
        role = roles[int(rand()*4)+1]
        # 生成随机日期
        day = int(rand()*28)+1
        mon = months[int(rand()*12)+1]
        year = 19 + int(rand()*6)
        time_str = sprintf("%02d-%s-%02d", day, mon, year)
        # 拼接JSON
        json_str = sprintf("{\"id\":\"%s\",\"role\":\"%s\",\"created_time_stamp\":\"%s\"", id, role, time_str)
        # 30%概率生成q_id字段
        if (rand() < 0.3) {
            q_id = sprintf("P%02dC%03d.DB.ATC.COM - %d", int(rand()*100), int(rand()*1000), int(rand()*10000))
            json_str = json_str sprintf(",\"q_id\":\"%s\"", q_id)
        }
        print json_str "}"
    }
}' > random_output_1m.jsonl

内容的提问来源于stack exchange,提问作者prat_86

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 02:45:00