我必须解析大约1gb的大型csv,将标头映射到数据库列,并格式化每一行。 I.E csv有“性别”男性,但我的数据库只接受enum('M', 'F', 'U')
。
由于文件太大,我必须使用节点流来转换文件,然后使用load data infile
一次上传所有文件。
我希望对load data infile
未提供的插入进行精细控制。如果单行包含不正确的数据,则整个上载失败。我目前正在使用mysqljs,它不提供api来检查池是否已到达queueLimit,因此我无法可靠地暂停流。
我想知道我是否可以使用apache kafka或spark来传输指令,它将按顺序添加到数据库中。我浏览了文档并阅读了一些教程,但没有一个展示如何将它们连接到数据库。它主要是消费者/生产者的例子。
我知道有多种方法可以解决这个问题,但我对将流与数据库无缝集成的方式非常感兴趣。如果流可以使用I.O为什么不使用数据库?我很确定大公司不会使用load data infile
或重复向数组中添加数据块并插入数据库。