Neatbo.

CSV 字段约束校验

按本地列规则检查 CSV,分别下载有效记录、异常记录和单元格问题报告。

浏览器本地处理输入CSV + JSON输出JSON / CSV单个文件最多 1 MiB · 最多 1 个
  1. 1添加输入
  2. 2调整设置
  3. 3获取结果

工具输入和文件在当前浏览器处理,不会上传。

输入内容

切换工具时在当前标签页临时保留输入。刷新或关闭后清除,较大的结果可能需要重新生成。

⌘ / Ctrl + Enter 运行

或将文件拖到这里

文件留在当前设备,原始文件不会被覆盖。

.csv · .txt

单个文件最多 1 MiB · 最多 1 个

    0 个字符 · 0 字节
    处理选项

    先填写标记为必填的选项,其余可保留默认值。

    CSV 下载为类似公式的单元格加单引号;JSON 报告保留原值。

    正在准备处理工具…

    开始之前

    为指定列定义字符串、整数、小数或公历日期类型,检查必填、精确枚举、唯一性和数值边界,保留原始单元格。

    如何使用

    1. 粘贴或打开表头唯一的 UTF-8 CSV,在第二输入区粘贴列规则 JSON。
    2. 明确要检查的字段与约束;数值边界使用字符串 min/max,枚举使用精确字符串值。
    3. 运行后核对 record/line/column/code/value 问题,下载报告和两类记录;修正源数据后重跑,未指定规则的列没有经过校验。

    支持范围与限制

    接受一份 UTF-8 CSV 或粘贴内容,最多 1 MiB、10,000 个数据记录、100 列、200,000 个单元格;已选文件优先。规则 JSON 最多 1 MiB、100 个字段,最多报告 40,000 项问题,超出时须缩小输入。

    CSV 须有唯一非空表头,且每行列数一致。规则使用 {"fields":[{"name":"age","type":"integer","required":true,"min":"0"}]}。支持 string/integer/decimal/date 及 required、unique、enum、min、max;未知规则或列名会报错,未指定的列原样保留但不校验。

    数值 min/max 必须写成 JSON 字符串,按精确十进制比较。数值最多 100 位数字,指数范围 -100 至 100;整数使用十进制整数写法。数值和日期校验时去除两端空白,日期须为公历 0001–9999 年的 YYYY-MM-DD。

    非必填空值或纯空白值跳过约束。枚举和唯一性精确比较原始非空文本,包括前导零和空格;所有重复记录都会报告。record 将表头记为 1;line 是记录开始的物理行号,带引号单元格内的换行也会计入。

    下载包括 report.json、valid.csv、rejected.csv、issues.csv。JSON 保留原值;CSV 默认给类似公式的单元格加单引号。页面预览最多 200 项问题;不执行规则代码、公式、正则表达式或数据库操作。

    操作示例

    示例输入

    id,age,date
    01,20,2024-02-29
    02,-1,2023-02-29
    03,,2024-01-01
    
    列规则(JSON):
    {"fields":[{"name":"id","required":true,"unique":true},{"name":"age","type":"integer","required":true,"min":"0"},{"name":"date","type":"date"}]}
    示例参数
    {"spreadsheetSafe": true}

    示例输出

    {
      "records": 3,
      "validRecords": 1,
      "rejectedRecords": 2,
      "issueCount": 3,
      "validatedColumns": [
        "id",
        "age",
        "date"
      ],
      "issues": [
        {
          "record": 3,
          "line": 3,
          "column": "age",
          "code": "min",
          "value": "-1"
        },
        {
          "record": 3,
          "line": 3,
          "column": "date",
          "code": "type:date",
          "value": "2023-02-29"
        },
        {
          "record": 4,
          "line": 4,
          "column": "age",
          "code": "required",
          "value": ""
        }
      ]
    }

    出现问题时

    先修正 CSV 语法、重复表头、未知字段名或无效规则;数据问题请查看报告,修改原单元格后重跑。超出文件、记录、单元格或问题数量上限时请缩小输入。

    常见问题

    异常记录会被丢弃吗?

    不会。异常记录保留在 rejected.csv,report.json 记录全部问题及原始单元格文本;有效记录单独交付。

    record 和 line 有何区别?

    表头是第 1 个记录,每条 CSV 记录只有一个记录号。带引号单元格可能跨多个物理行,line 表示该记录开始的行号。

    01 和 1 算重复吗?

    不算。唯一性和枚举使用原始精确字符串。数值校验可以将两者都识别为整数,但不会改写标识符。

    会自动校验全部列吗?

    不会。只检查规则中指定的字段,其他列原样保留,使校验合同保持明确。

    文档与延伸阅读

    相关工具