1

我有一个长 CSV 字符串,最大长度为 44,119 个字符。我有一个接受 1 到 6 个参数的 SQL 存储过程,每一个都varchar(8000)将长 CSV 分成多个参数并将其传递给存储过程。

我的存储过程工作正常,但是如何将长 CSV 分成不同的字符串变量,使它们不超过 8000 个字符的字符串长度?

例如:

string myLongCSV = "1,2,345,5674,234,22,34..." //a long CSV

我不能使用SubString (0, 8000)第 8,000 个字符可能会破坏长 CSV 中的数字而不是逗号。

我想用 C# 编写代码,使其将长 CSV 中的所有数字划分为不同的字符串变量,使每个变量长度不超过 8000 个字符。

4

2 回答 2

1

如果可以,请修改 SQL 存储过程以使用数据类型的单个参数VACHAR(MAX),因为它最多可存储 2,147,483,647 个字符。

如果不能,请使用String.Split函数,如下所示:

string[] words = myLongCSV.Split(',');
foreach (string word in words)
{
    // some logic here to construct your parameters and check their length.
}
于 2013-09-15T04:50:59.483 回答
0

尝试这个。

我们的想法是获取第 8,000 个字符,如果它是一个数字,则减少索引直到它是 ',',此时你可以这样做Substring(),如下所示:

string s = "123,45636...";      
int index = 7;

while (true)
{
    if (s[index] == ',')
    {
        s = s.Substring(0, index);
        break;
    }
    else
    {
        index--;
    }
}
于 2013-09-15T04:57:12.323 回答