Tag: 大数据

如何通过param将大于200个字符的字符串传递给存储过程

我遇到了一个问题,在我的代码中,我必须对我的数据表中存在的所有文章进行求和请求,我将所有文章ID连接在一个字符串中,如’a1,a2,a3’,这应该可行。 但我有大型ID和大约150篇文章,所以我尝试传递给存储过程的字符串大约1300个字符,当它转到存储过程时这是200个字符的截断。 你知道任何解决方案将大字符串传递给没有SQL Server的存储过程来截断这个字符串吗? 我可以在这里写下C#代码或SQL存储过程,如果它可以帮助你帮助我。 这是存储过程: ALTER PROCEDURE [dbo].[GetChargePetrin] — Add the parameters for the stored procedure here @articlesList varchar(MAX) AS BEGIN — SET NOCOUNT ON added to prevent extra result sets from — interfering with SELECT statements. SET NOCOUNT ON; SELECT CAST(SUM(CAST(Qa01 AS INT) /CAST(a.CO_UQB_PET AS INT)) AS varchar) as ‘qa1’, CAST(SUM(CAST(Qa02 AS INT) […]

在关键服务器上(数十亿个文件名)对字符串进行内存约束的外部排序,并将重复数据组合在一起计算

我们的服务器在其日志文件夹中生成{c521c143-2a23-42ef-89d1-557915e2323a}-sign.xml文件。 第一部分是GUID; 第二部分是名称模板。 我想计算具有相同名称模板的文件数。 例如,我们有 {c521c143-2a23-42ef-89d1-557915e2323a}-sign.xml {aa3718d1-98e2-4559-bab0-1c69f04eb7ec}-hero.xml {0c7a50dc-972e-4062-a60c-062a51c7b32c}-sign.xml 结果应该是 sign.xml,2 hero.xml,1 可能的名称模板的总种类未知,可能超过int.MaxValue 。 服务器上的文件总数未知,可能超过int.MaxValue 。 要求 : 最终结果应按名称模板排序。 该工具将运行的服务器是超级关键的。 在运行工具之前,我们应该能够告诉内存使用情况(MB)和生成的临时文件的数量(如果有),并且不知道日志文件夹的任何特征。 我们使用C#语言。 我的想法 : 对于前5000个文件,计算出现次数,将结果写入Group1.txt 。 对于第二个5000个文件,计算出现次数,将结果写入Group2.txt 。 重复,直到处理完所有文件。 现在我们有一堆组文件。 然后我合并所有这些组文件。 Group1.txt Group2.txt Group3.txt Group4.txt \ / \ / Group1-2.txt Group3-4.txt \ / Group1-4.txt Group1-4.txt是最终结果。 我和我朋友之间的分歧是我们如何计算事件的数量。 我建议使用字典。 文件名模板是关键。 设m为分区大小。 (在这个例子中它是5000.)然后时间复杂度O(m),空间复杂度O(m)。 我的朋友建议对名称模板进行排序,然后在一次传递中对事件进行计数,因为相同的名称模板现在都在一起。 时间复杂度O(m log m),空间复杂度O(m)。 我们无法说服对方。 你们看到这两种方法有什么问题吗?