如何将CSV数据的数据处理速度提高到SQL Server?

时间:2016-10-14 06:46:31

标签: json csv apache-nifi

我已经使用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?

2 个答案:

答案 0 :(得分:3)

您提到将数据拆分为JSON,但您正在使用SplitText和ReplaceText。您的传入数据是什么样的?您是否尝试转换为JSON以使用ConvertJSONtoSQL?

如果你有CSV传入,并且你知道列,SplitText应该很快拆分行,并且ReplaceText可以用来创建一个INSERT语句供PutSQL使用。

或者,正如@Tomalak所提到的,您可以尝试将CS​​V文件放在SQLServer可以访问它的位置,然后使用PutSQL发出BULK INSERT语句。

如果这些都不够,可以使用ExecuteScript执行拆分,列解析和转换为SQL语句。

答案 1 :(得分:3)

您的传入CSV文件有~300,000行?您可以尝试使用多个SplitText处理器分阶段将其分解。一个很大的分裂可能会对系统资源造成极大的负担,但将其划分为多个阶段可以平滑您的流量。通常建议的最大值在每次拆分中介于1,000到10,000之间。

有关详细信息,请参阅this answer