最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

NodeJ基于CSV输入创建动态mySql表

运维笔记admin12浏览0评论

NodeJ基于CSV输入创建动态mySql表

NodeJ基于CSV输入创建动态mySql表

我正在尝试构建一个执行以下(简化)的应用程序:

  1. 允许用户选择CSV文件
  2. 将该CSV上传到NodeJS服务器
  3. 解析文件并创建行数组(带标题)
  4. 根据csv中的列标题生成动态“Create Table”sql,但也检测数据类型(列名,数据类型等每次都会不同)
  5. 将csv数据插入新创建的表中

它的第4步我遇到了麻烦。有没有办法扫描数据元素数组并确定数据类型应该是什么?

我看过Papa Parse和csv-parse,但我没有做我需要的。尽管Papa Parse很接近,但它会分别转换每个数组元素并且不会选择日期。

回答如下:

即使您运行完整的文件扫描,也很难猜出确切的类型。

另一个问题是处理输入文件中的错误,例如列中的数字,应该存储日期。

此外:保险号(或帐号)是一个数字,但在数据库中应存储为字符串。

我建议你直接从大数据分析。

分三个阶段运行整个过程:首先创建一个中间表,其中每列的类型为Text,并使用mysq将数据导入其中:LOAD DATA INFILE ...

根据用户以前的选择,列名,内容分析以及为用户显示表的“向导”进行初步分析。 (或跳过显示向导)

分析应包括最短,最长,平均和最常见长度的计算(例如前100行包含长字符串,错误消息:Some date for some proces isn't provided和其他有效日期);各种价值观(性别,国家,其他“字典”价值观);随机内容分析(检测日期和数字)

最后你可以使用INSERT INTO ... SELECT,更改列类型(不要忘记允许NULL转换错误)或逐行转换和过滤操作。

//编辑

呃,我以为你的文件有几GB。在内存中加载大文件没有意义。

当然,您可以使用库来读取CSV并在内存中分析它,而不是MySQL中的临时表。但无论如何,你不会避免内容分析。没有什么可隐藏的 - 没有高级AI系统的自动分析平均有效。

如果你发现了一些甚至可以检测到数据类型的东西,你可以在它上面构建。也有帮助,我可以成为一个tablesorter parsers。

发布评论

评论列表(0)

  1. 暂无评论