Загрузить данные из таблицы со столбцом NVARCHAR (MAX) - невозможно преобразовать в строку, поскольку значение усекается - PullRequest
0 голосов
/ 26 января 2019

У меня есть DFT с OLEDB Source - таблица sql с именем типа данных описания NVarchar(Max)

select max(len(description)) from tbl_Test -- returns 10,000

Редактор сценариев для преобразования

Output0Buffer.AddRow();
        Output0Buffer.TransId = Row.id;
        System.Text.UnicodeEncoding encoding = new System.Text.UnicodeEncoding();
// i am splitting a column here into multiple records - no issues here
        byte[] bytes = Row.descr.GetBlobData(0, (int)Row.descr.Length);
        string myString = encoding.GetString(bytes);
        Output0Buffer.TransDescr = myString;

этот код работает нормально, если выходной столбец равен DT_WSTR, но проблема в том, что максимальное значение здесь равно 8000, следовательно, во время выполнения ошибка, что текст обрезается, и он действительно будет делать то, что я не хочу.

Если я даю выходной столбец в виде текстового потока DT_NTEXT), приведенный выше код выдаст ошибку.

из этого преобразования сценария назначение - таблица sql с descr как nvarchar(max).

1 Ответ

0 голосов
/ 28 января 2019

В компоненте сценария используйте DT_NTEXT в качестве типа данных для выходного столбца и используйте следующий код.

Output0Buffer.TransDescr.AddBlobData(Row.descr.GetBlobData(0, (int)Row.descr.Length))

Ссылки

...