目标
构建流式读取 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。