gpt4 book ai didi

sql - 如何在 NiFi 中映射流文件中的列数据?

转载 作者:行者123 更新时间:2023-12-01 12:22:50 25 4
gpt4 key购买 nike

我有一个具有以下结构的 csv 文件。

Alfreds,Centro,Ernst,Island,Bacchus
Germany,Mexico,Austria,UK,Canada
01,02,03,04,05

现在我必须将该数据移动到数据库中,如下所示。

Name,City,ID
Alfreds,Germay,01
Centro,Mexico,02
Ernst,Austria,03
Island,UK,04
Bacchus,Canda,05

我尝试映射这些列,但我无法按列提取数据。

这里我的输入数据是列式的,但我需要在 SQLServer 中按行式插入这些数据

任何人都可以建议在 sql server 中将列式数据传输到行式数据的方法吗?

谢谢

最佳答案

没有现有的 Apache NiFi 处理器来执行列转置。问题之一是这很难以流式方式完成,因为大多数 NiFi 组件都是设计的,因为在一个简单的实现中,您需要同时将流文件的全部内容保存在事件内存中。

我建议使用 ExecuteScript 处理器来执行此操作 ( here's a 6 line Python example )。这样做要小心,因为如果设置不正确/您将意外的大文件读入内存,您很容易导致堆溢出。

您可以编写一个自定义处理器,它通过遍历 n 行中的每一行并读取您的定界符、每行存储一个字节计数器、结合 n< 来执行流式转置操作/em> 元素作为单个输出行,并从每行的相应字节计数器开始重复该过程。 (给定 m 列,这是 O(m * n))。

另一种解决方案是使用 SplitText 处理器将 CSV 输入拆分为单独的行,使用 ExecuteScript 或自定义处理器将单行转置为单列,以及然后使用自定义合并操作(扩展现有的 MergeContent 处理器或编写脚本来执行此操作)将传入的列横向连接到重构矩阵中。 (O(n) + O(n) + O(m) => O(2n + m) 但各个转置操作可以并行执行,因此 < em>x 个线程是 O(n + n/x + m))。

这些方法中的任何一种都需要一定程度的定制开发。如果您真的犹豫不决,可以尝试使用 ExecuteStreamCommandmany bash solutions 之一在命令行上进行换位。

关于sql - 如何在 NiFi 中映射流文件中的列数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42547244/

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