繁体   English   中英

NIFI:将SQL查询中的每月转储作为CSV文件接收到SFTP服务器中

NIFI: Ingesting monthly dump from SQL query into SFTP server as CSV files [closed]

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我想使用SQL查询将数据分别作为每月CSV存储到SFTP服务器中。

例如,我的查询是:

    select fooId, bar from FooBar 
where query_date>=20180101 and query_date<20180201 --(for the month of January 2018)

我想将其存储为20180101_FooBar.csv到我的SFTP服务器上。 同样,其他月份的其他文件也按照相同的过程进行查询,但间隔不同。

需要考虑的重要事项: I have to store the *fooId* as MD5 Hash string.

如何在NIFI中自动执行此流程?

大致来说,我预见的流程是:

*ExecuteSQL*(but not sure how to paramterize the counter for query_date) 
-> *ConvertAvroToJson* 
-> *EvaluateJsonPath* (to extract the fooID ) 
-> *HashContent* 
-> *MergeContent* 
-> *PutSFTP*

请为我提出建议。

1 个回复

对于这种情况,我可以想到三种方法。

方法1 :使用MD5函数执行SQL查询以获取fooId的哈希值:

在此处输入图片说明

流:

  1. GenerateFlowFile //添加开始日期,结束日期属性

     startdate -> ${now():format("yyyyMM"):minus(1):append("01")} enddate -> ${now():format("yyyyMM"):append("01")} 
  2. ExecuteSQL //选择md5(fooId)foodId,从FooBar中输入bar

     query_date>=${startdate} and query_date<${enddate} 

    根据您的来源更改上述查询,以获取列的md5哈希值

  3. ConvertRecord //将Avro格式转换为Json格式

  4. UpdateAttribute //更改文件名
  5. PutSFTP //存储文件。

方法2 :在NiFi中创建MD5哈希值

在此处输入图片说明

流:

  1. GenerateFlowFile //添加开始日期,结束日期属性

     startdate -> ${now():format("yyyyMM"):minus(1):append("01")} enddate -> ${now():format("yyyyMM"):append("01")} 
  2. ExecuteSQL //选择fooId,从FooBar中删除

    其中query_date> = $ {startdate}和query_date

    根据您的来源更改上述查询,以获取列的md5哈希值

  3. ConvertRecord //将Avro格式转换为Json格式

  4. SplitJson //将json数组拆分为单独的流文件
  5. EvaluateJsonPath //将除fooId键之外的所有键值提取为流文件属性。
  6. EvaluateJsonPath //使用fooId值覆盖流文件内容
  7. HashContent //使用MD5算法获取流文件内容的哈希值
  8. AttributesToJson //使用新的哈希md5值重新创建json消息
  9. MergeContent //使用折旧策略创建json数组
  10. UpdateAttribute //更改文件名
  11. PutSFTP ////存储文件。

另一种方法是编写一个脚本该脚本可以解析json数组消息并为fooId键创建md5 hashvalue ,并使用新的md5哈希值编写json消息。

我上传这两种方法Approach1Approach2模板,保存并上传到NiFi实例更多的参考和使用你的情况最适合的方法。

2 将CSV文件作为单独的表从SFTP服务器自动传输到sql服务器

“我的工作”正在尝试使工作流程自动化,该工作流程基本上是传输存储在SFTP服务器文件夹中的所有CSV文件,并将它们直接分离到每个文件的单独表中的SQL Server数据库中。 有什么办法可以完成我一直在Internet上搜索的任务,但没有特别的选择,我也正在考虑将SSIS包作为一种选择,但它们 ...

3 使用NiFi将CSV数据导入Hive

我正在尝试将csv数据导入Hive数据库。 以此目的, 我尝试过 CSV数据被转换为ORC格式,并且数据正在加载到HDFS中。 在此HDFS数据之上,我可以创建配置单元外部表。 现在,我想用putHiveQL处理器进行测试。 为此,我需要将CSV数据转换为AVRO到 ...

4 使用 Apache NiFi 将 CSV 文件从 Windows 目录复制到 SQL Server DB 时出错

我正在尝试使用 Apache NiFi 将 CSV 文件从我的本地目录复制到我本地机器上运行的 SQL Server 数据库中。 我是这个工具的新手,我花了几天的时间在谷歌上搜索和构建我的流程。 我设法连接到源和目标,但仍然无法填充数据库,因为我收到以下错误:“记录中的任何字段都没有映射到表名表定 ...

5 在NiFi中将CSV数据导入MySQL数据库

我正在尝试将CS​​V文件的数据导入MySQL Db。 我的CSV文件具有名为`` MeasurementTime ''的字段,值为2018-06-27 11:14.50 。 我的流程将那个字段当作字符串,因此PutSQL给了错误。 我正在使用与此模板相同的模板,但未使用InferAvro ...

6 Nifi Tailfile处理器始终提取完整文件

我的Tailfile处理器一直在提取我尾随的整个文件。 这会造成一种情况,我将20mb文件添加到流中,然后大约一分钟后,我将拥有21mb文件,依此类推。为什么这样做呢? 这是配置 知道我有这个处理器通过minifi馈入我的nifi流。 因此它在计算机上是本地的,然后通过远程进程 ...

7 使用RCurl从SFTP服务器下载带有特殊字符的.csv文件

我正在使用RCurl下载每天上传到远程服务器的.csv文件,该服务器只能通过我公司的网络进行访问。 我设法使用以下代码下载了测试文件: 今天,我尝试使用相同的方法下载一个真实的 .csv文件,并遇到以下错误消息: curlPerform中的错误(curl = curl,.op ...

8 获取SQL Server将数据从几个表转储到几个单独的CSV文件

我正在尝试将数据从多个表批量导出到单独的CSV文件。 我创建了一个小的.bat文件来进行提升,但是它一直失败。 这是代码: 我不知道我在这里缺少什么,因为这看起来很简单,但是我无法让它吐出任何数据。 我猜它不起作用,因为该数据库位于远程服务器上,并且正在尝试将数据转储到本地驱动 ...

9 SQL Server查询每月总计

我有一个查询,总计了2010年1月1日所有活动的案例。 我还有一个Calendar表,我可以使用它创建一个查询,从1月1日,2月1日,3月1日到12月1日返回12个日期。 我无法弄清楚如何结合2个查询,所以我得到每个月1日的所有案例总数的计数。 我需要看到类似的东西 ...

10 每天从sFTP中的CSV文件中馈入SQL Server表

我有一个CSV文件,只能通过sFTP访问。 CSV文件每天更新​​一次(结构相同但值不同)。 我的目标是每天复制CSV的值并将其粘贴到SQL Server表中。 当然,该过程需要自动化。 我的CSV也包含太多行。 csv的第一列是“ ID”。 我有一个固定的“ ID”列表。 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM