← 中文资源

简体中文版本

构建带类型推断的 CSV 转 SQL 转换器

流式 CSV 转 SQL CLI:列类型推断、CREATE TABLE 与批量 INSERT 生成、转义正确且百万行内存恒定。

阅读英文原文

目标

构建流式读取 CSV、推断整数/浮点/布尔/日期/字符串列类型、生成建表语句与批量插入语句、并正确处理引号转义与 NULL 语义的转换器,任意大小输入内存恒定。

要点

流水线带背压:输出 writer 定步、迭代链传导暂停、读取器绝不超前;推断规则显式——整数遇浮点升级、前导零强制字符串、ISO 形态提议日期、严格模式拒绝混合类型并点名行列;NULL 与空字符串在旗标下区分而非静默决定。

提示

CRLF 要当一个终止符处理;007 变整数丢数据是推断规则必须显式规避的坑。

验证

百万行测试边生成边转换边采样堆内存,任何阶段缓冲都会让曲线抬头并带斜率失败。 项目目录骨架:

csv2sql/
├── bin/csv2sql.js
├── src/
│   ├── reader.js
│   ├── infer.js
│   ├── emit.js
│   └── convert.js
├── test/
│   ├── infer.test.js
│   └── emit.test.js
└── package.json

实施阶段:Streaming CSV reader → Type inference → SQL emitter with escaping → Pipelined conversion。