gpt4 book ai didi

javascript - NodeJs 基于 CSV 输入创建动态 mySql 表

转载 作者:行者123 更新时间:2023-11-29 16:18:32 26 4
gpt4 key购买 nike

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

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

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

我看过 Papa Parse 和 csv-parse 但都没有达到我的需要。 Papa Parse 虽然很接近,但它单独转换每个数组元素并且不获取日期。

最佳答案

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

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

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

我向您推荐一种直接来自大数据分析的方法。

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

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

分析应包括最短、最长、平均和最常见长度的计算(例如,前 100 行包含长字符串,错误消息为:未提供某些过程的某些日期 和其他均为有效日期);各种值(性别、国家、其他“字典”值);随机内容分析(检测日期和数字)

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

//编辑

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

当然,您可以使用库来读取 CSV 并在内存中分析它,而不是使用 MySQL 中的临时表。但无论如何你都无法避免内容分析。没有什么可隐藏的 - 无需高级人工智能系统的自动分析效果一般。

如果您发现了一些可以检测数据类型的东西,您可以在它的基础上进行构建。也有帮助,我可以成为 tablesorter parsers .

关于javascript - NodeJs 基于 CSV 输入创建动态 mySql 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54648485/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com