将多个CSV文件加载到MySQL中

时间:2013-05-02 19:43:50

标签: mysql csv etl metrics talend

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

数据来源是:

  1. CSV文件
  2. PDF文件
  3. 特设/手动数据。
  4. 我在玩Talend和MySQL。关于如何加载CSV文件,我有点困惑。我应该有一组目录和一个或多个加载文件的计划任务吗?

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

1 个答案:

答案 0 :(得分:1)

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

因此,在开始实施任何事情之前,请先考虑这些问题:

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

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

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