c# - SSIS 4000 字符限制问题

标签 c# sql-server ssis

我的 SSIS 包需要读取 JSON 文件并将整个 JSON 文本存储到一行中。目前,我可以使用平面文件源来完成此操作。

但是,数据类型必须是 DT_NTEXT,这样我才能导入超过 4000 个字符。 当我需要包含从文件名和目录路径捕获的更多数据时,就会出现问题。一旦它通过脚本组件来捕获该信息,我就无法再将 JSON 数据写回其原始列 DT_NTEXT 是只读的。我也尝试过从脚本组件读取文件并遇到同样的问题。

我还尝试将它们用作两个不同的数据源并将它们合并,但数据类型不允许我进行排序。最后,我尝试使用脚本组件将 JSON 数据分配给变量,但您只能在执行后执行此操作。

整个情况的讽刺之处在于,每个文件的所有数据只需要位于一行上。这些列概述如下:

Current Script output

这是我当前数据流的图片,但这并不能反射(reflect)我尝试过的所有内容。

Control flow

Data flow

如果有人能帮助我解决这些奇怪的限制,我将不胜感激。

最佳答案

在您的脚本组件上,将 JSON 字符串转换为字节数组并存储它。

string jsonData = "<Your json string>";
System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
OutputBuffer.AddRow(); 
OutputBuffer.JSON.AddBlobData(encoding.GetBytes(jsonData )); 

点击此链接了解更多详细信息。

https://www.mssqltips.com/sqlservertip/5047/import-and-export-varcharmax-data-with-sql-server-integration-services-ssis/

关于c# - SSIS 4000 字符限制问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48915618/

相关文章:

c# - 如何在 C# 中创建自己的动态类型或动态对象?

c# - sqlite-net 更新方法如何工作?

c# - 从 C# 调试 C++ dll

c# - SQL 差异 EF 6 与 EF Core

sql-server - 使用 SQLCMD 运行 SQL 文件时出现 "Incorret syntax near..."错误

sql - 如何在 SQL 中将两列追加到一列中?

sql - 在SSIS中分配字符串变量

c# - 如何在当前用户下启动进程?

ssis - 如何根据生成的代码编译 BIMLScript

sql-server - 如何从 SSIS 控制流检查作业状态?