我已经使用Nifi-0.6.1与GetFile + SplitText + ReplaceText处理器的组合来分割具有30MB(300 000行)的csv数据。
GetFile能够非常快速地将30mb传递给SplitText。
在SpliText + Replace Text中需要25分钟将数据拆分为Json。
只有30 MB的数据需要25分钟才能将商店csv带入SQL Server。 它逐字节地执行转换。
我在Processor中尝试过Concurrent Task选项。它可以加速,但也需要更多的时间。那时它达到了100%的cpu使用率。
如何更快地将csv数据导入sql Server?
答案 0 :(得分:3)
您提到将数据拆分为JSON,但您正在使用SplitText和ReplaceText。您的传入数据是什么样的?您是否尝试转换为JSON以使用ConvertJSONtoSQL?
如果你有CSV传入,并且你知道列,SplitText应该很快拆分行,并且ReplaceText可以用来创建一个INSERT语句供PutSQL使用。
或者,正如@Tomalak所提到的,您可以尝试将CSV文件放在SQLServer可以访问它的位置,然后使用PutSQL发出BULK INSERT语句。
如果这些都不够,可以使用ExecuteScript执行拆分,列解析和转换为SQL语句。
答案 1 :(得分:3)
您的传入CSV文件有~300,000行?您可以尝试使用多个SplitText处理器分阶段将其分解。一个很大的分裂可能会对系统资源造成极大的负担,但将其划分为多个阶段可以平滑您的流量。通常建议的最大值在每次拆分中介于1,000到10,000之间。
有关详细信息,请参阅this answer。