- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个具有以下结构的 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)
)。
这些方法中的任何一种都需要一定程度的定制开发。如果您真的犹豫不决,可以尝试使用 ExecuteStreamCommand
和 many bash
solutions 之一在命令行上进行换位。
关于sql - 如何在 NiFi 中映射流文件中的列数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42547244/
我是一名优秀的程序员,十分优秀!