mysql - 将多个 CSV 文件加载到 MySQL 中

标签 mysql csv etl metrics talend

我正在为我的团队开发一个指标项目。我必须将几个不同的报告加载到中央存储库中,然后根据这些数据创建表格和报告。

数据来源是:

  1. CSV 文件
  2. PDF
  3. 临时/手动数据。

我正在使用 Talend 和 MySQL。我对如何加载 CSV 文件有点困惑。我应该有一组目录和一个或多个加载文件的计划任务吗?

另一个想法是编写一个自定义文件处理器,它将根据命名约定加载文件。你怎么看?

最佳答案

“PDF”很复杂。因为它是 pdf...“临时/手动数据”需要更多详细信息。
但是,如果我们专注于 csv 并且您的问题仅在我是对的情况下才与这些人相关,那么我会通过编写一个应用程序来实现这一点,该应用程序在我的 mySQL DB 中调用 SP,将完整路径移交给 csv (以及任何附加数据,例如表的“用户友好名称”(如果需要)或您想要存储的任何其他元数据),它使用 mySQL Load Data 执行导入.
原因是,导入 csv 后,“业务逻辑”中可能有很多规则,并且根据不断变化的业务需求来维护应用程序比一直更改数据库行为更容易,而且,如果出现严重错误,我的数据库是安全的,只有“导入管理器应用程序”失败 - 因为我不必将其或 csv 存储在我的数据库所在的同一系统上。
数据库,关系数据库基本上是关于存储数据,并基于“集合论”快速检索数据,而不是关心数据如何进入系统。

因此,在开始实现任何事情之前请考虑以下问题:

  • 处理后 csv 会发生什么?可以删除吗?应移至例如“已处理”文件夹?应该保持/留在原样吗?
  • 如果应该保持原样,我应该做什么才能知道我已经处理了该文件? (例如,设置“准备存档”标志?触摸“上次修改”日期并将其设置为 1950.01.01?向文件添加额外的属性?
  • 如果 csv 导入失败(例如文件中的数据无效,或者不应有 NULL 的 NULL 值),我该怎么办?显示错误?将 csv 标记为不可用?发电子邮件?移至“processing_failed”文件夹?
  • 如果输入文件夹中的文件数量变得巨大该怎么办?
  • 如果业务逻辑发生变化或 csv 格式发生变化,我可以轻松地更改导入/流程等吗?

等等。仔细考虑您拥有的所有选项并做出决定。

我希望我回答了你的问题;)

关于mysql - 将多个 CSV 文件加载到 MySQL 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16346422/

相关文章:

php - 当我在 php 代码中运行具有特定值的查询时,它不返回任何行

php - 使用 PDo 将数据插入 mysql 的更有效方法

python - 重新组织 CSV,使日期不是列标题

java - 将某些 Flink 操作优先于其他操作

mysql - 使用 UNION 在 VIEW 内级联 WHERE 子句

java - Hibernate 在外键 @oneToone 映射中获取 NULL

mysql - 如何将csv文件数据插入mysql数据库

python - 在线读取 csv 时出现错误 Error tokenizing data

sql-server - 同时执行的 SSIS 2008 任务

sql-server - 表达式变量在运行时发生变化