gpt4 book ai didi

mysql - 平面文件作为输入 - MySQL 最佳实践

转载 作者:行者123 更新时间:2023-11-29 18:13:04 24 4
gpt4 key购买 nike

我每天都会收到一个平面文件 (CSV),其内容会导入到我的数据库中(而不是通过 Web 表单、POS 等输入数据)。一条记录有 40 个字段,最多有 600,000 条唯一记录。

到目前为止,我还没有看到需要将其设为关系数据库,尽管肯定有一些规范化可以使其更加高效;重复的产品、商店、客户、经销商等。

如果我从头开始并以某种方式增量输入数据,我就会知道如何做到这一切(我浏览过的所有资源都以这种方式涵盖它,但当你有大量数据时,没有一个资源涵盖它)数据已经存在并且需要使其相关)。随着 CVS 的出现,我不太确定数据库建立后如何导入数据。如果我要将这 40 个字段拆分为 5 个表,那么我是否必须以相同的方式拆分该每日文件并一次导入一个?外键会这样更新吗?

如果有人可以将我推向正确的方向,我会自己进行更多挖掘。

如果您面临相同的项目,您将如何创建这样的数据库并执行每日更新?

谢谢!

最佳答案

独立于您现在拥有的内容(CSV 结构和数据)创建数据库结构。例如。组织您的表格以满足您 future 的需求,思考并定义它们之间的良好关系,应用适当的索引。

作为第二步 - 我认为这是不可避免的,用您自己的编程语言编写一个小程序。应该可以

  • 主要从(CSV)文件中读取记录/行,
  • 验证/清理获取的数据
  • 根据需要导入/保存相应数据库表中的数据。我所说的“根据需要”是指,随着时间的推移,可能会出现多种因素,这些因素可能会意外地影响您的第一个数据库结构决策。例如,需要一些时态表。此外,您还应该受益于触发器和存储过程所提供的优势。
  • 正确处理导入过程中出现的错误和异常。例如,由于最终的“重复键”问题 - 由于文件中的数据可能容易出错,某些记录无法在某一天导入。这并不意味着导入应该中断。读取记录,尝试保存。如果出现问题,请处理它(将行复制到另一个文件中,或将其保存在特殊表中,以供以后编辑/修改和重新导入),并让程序按照下一条记录的顺序进行操作。
  • 正确记录所有(主要)操作并维护读取和有问题记录的计数器。
  • 导入后自动将每个日常文件复制到备份目录中,直到不再需要为止。
  • 最终通过电子邮件告知您操作的状态。

第三步是找到一个解决方案来实现整个周期的自动化。例如,找到一个任务/cron-jobs 管理器每天启动您的程序,每天一次甚至两次,而无需您手动执行此操作。

关于根据您的 ddatabase 结构将文件拆分为不同的文件:没有必要,例如这将是一个多余的步骤,因为您的程序应该设法读取文件并相应地处理数据导入。

就程序的类型而言:它应该是一个Web解决方案,以便您可以随时访问和修改它。

祝你好运。

关于mysql - 平面文件作为输入 - MySQL 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47241538/

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