gpt4 book ai didi

ssis - 当数据库列定义为 VARCHAR(MAX) 时,如何使用 SSIS 传输数据?

转载 作者:行者123 更新时间:2023-12-03 10:37:02 29 4
gpt4 key购买 nike

我在执行包时收到以下消息。

Text was truncated or one or more characters had no match in the target code page.



我正在从具有字段名称的 SQL 表中获取数据 task_teammember数据类型为 VARCHAR(MAX) .包执行在源头失败。 I 型铸列 task_teammber进入 VARCHAR(8000)它在没有任何错误消息的情况下执行包。但是,目的地仅收到 8000 字符而有多个 8000 源表中的字符。

当列定义为 VARCHAR(MAX) 时,如何使用 SSIS 将所有数据从源表传输到目标表?

最佳答案

您需要使用 SSIS 数据类型 text stream [DT_TEXT] 从数据类型 varchar(MAX) 的 SQL Server 表列中获取数据

下面是一个简单的示例,它说明了 SSIS 如何从源自动推断数据类型。该示例使用 SQL Server 2008 R2 数据库和 SSIS 2008 R2

在 SQL Server 数据库中创建下表以存储源文本并使用目标使用 SSIS 包插入文本。

CREATE TABLE [dbo].[SourceTable](
[Id] [int] IDENTITY(1,1) NOT NULL,
[SourceText] [varchar](max) NOT NULL
) ON [PRIMARY]

CREATE TABLE [dbo].[DestinationTable](
[Id] [int] IDENTITY(1,1) NOT NULL,
[DestinationText] [varchar](max) NOT NULL
) ON [PRIMARY]

将大长度文本插入源表。在执行包之前可以看到源表中的数据包含超过10,000个字符并且目标表是空的。

Before

创建一个带有数据库连接管理器的 SSIS 包。将数据流任务放在控制流任务上。在数据流任务中,放置 OLE DB 源和 OLE DB 目标以从 dbo.SourceTable 传输数据。至 dbo.DestinationTable .这里的截图显示了包的执行状态。

Execution

如果您再次运行查询,您将看到目标表中填充了使用 SSIS 包的源表中的文本,没有任何截断错误。

After

返回包的数据流任务选项卡并右键单击 OLE DB Source然后点击 Show Advanced Editor...
Advanced editor

关于 Advanced Editor for OLE DB Source ,单击输入和输出属性选项卡。展开 External Columns并选择 SourceText .您会注意到 SSIS 将列数据类型设置为文本 stream [DT_TEXT]基于数据类型 VARCHAR(MAX)在源表上定义。

Data type

以下是 SSIS 中 SQL Server 数据类型 VARCHAR(MAX) 和 NVARCHAR(MAX) 的映射。

VARCHAR(MAX) ---> 文本流 [DT_TEXT]

NVARCHAR(MAX) ---> Unicode 文本流 [DT_NTEXT]

上阅读更多相关信息MSDN Integration Services Data Types

希望有帮助。

关于ssis - 当数据库列定义为 VARCHAR(MAX) 时,如何使用 SSIS 传输数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14705639/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com