CSV 字段约束校验
按本地列规则检查 CSV,分别下载有效记录、异常记录和单元格问题报告。
- 1添加输入
- 2调整设置
- 3获取结果
工具输入和文件在当前浏览器处理,不会上传。
开始之前
为指定列定义字符串、整数、小数或公历日期类型,检查必填、精确枚举、唯一性和数值边界,保留原始单元格。
如何使用
- 粘贴或打开表头唯一的 UTF-8 CSV,在第二输入区粘贴列规则 JSON。
- 明确要检查的字段与约束;数值边界使用字符串 min/max,枚举使用精确字符串值。
- 运行后核对 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 算重复吗?
不算。唯一性和枚举使用原始精确字符串。数值校验可以将两者都识别为整数,但不会改写标识符。
会自动校验全部列吗?
不会。只检查规则中指定的字段,其他列原样保留,使校验合同保持明确。