c# - 如何使用 SSIS 将文档(文本、csv、excel)或 BLOB 文件加载到 varbinary(MAX) 数据库列中
问题描述
我尽我所能寻找任何资源,但我只看到将图像加载到varbinary(max)
SQL Server 中的列中的示例。我想将实际文档转换为varbinary
格式,并将它们加载到数据库列中。
我会担心以后转换它们。我知道你会说“当你可以只存储文件的目录并从服务器上的文件位置检索文件时,你为什么要这样做?” 这是因为我们正在创建一个用于发送通知的框架,而我们正在加载的 BLOB 文件将是文档 - 或任何类型的附件。这正是我老板想要的方式。
CREATE TABLE [dbo].[AEI_Notification_Artifacts]
(
[artifact_id] [BIGINT] IDENTITY(1,1) NOT NULL,
[notification_id] [BIGINT] NOT NULL,
[artifact] [VARBINARY](MAX) NULL,
CONSTRAINT [PK_AEI_Notification_Artifacts]
PRIMARY KEY CLUSTERED ([artifact_id] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
我正在尝试通过平面文件和导入列任务加载文件并在 SSIS 中转换它们......但我发现的资源仅适用于图像。我想我需要创建一个手动复杂的脚本来转换数据然后流式传输。
解决方案
我们无需在 SSIS 中使用脚本任务即可处理此问题。
这是一个小例子。在您的情况下,您可以将 Source 组件替换为您的 FlatFile 源。FlatFile 源应该输出一列,它是C:\support\yourfile.bin
您希望导入的文件的文件路径(例如:)。
接下来,我们将配置 Import Column 组件:
接下来我们需要添加我们要导入的列。首先选择导入列输出/输出列,然后按下Add Column
按钮。接下来设置DataType
为[DT_IMAGE]
(这将varbinary(MAX)
在写入目标时转换为)。最后记下 LineageID。
现在回到 Import Column Input\Input Columns\FilePath。选择该列,然后Customer Properties
设置FileDataColumnID
为我们之前提到的 LineageID。
现在您应该准备好将数据放入您选择的目的地。
[编辑:错别字]
推荐阅读
- wpf - 如何在自定义消息框中使用重载 (myMSGBOX.SHOW(overloads)
- laravel - How to send image API From laravel to slim
- python - Python 中的实例属性获取器
- sql - Column doens't exists in PostgreSQL (WHERE column_name = column_value)
- mysql - How to apply intersection grouped with index column in MYSQL
- mysql - How restrict mysql tiny-int to accept just integer
- reactjs - 让变量在 useImperativeHandle 函数中未定义
- cookies - Set “samesite=none” in aiohttp EncryptedCookieStorage
- android - 使用 exoplayer 播放 getExternalFilesDir mp3
- python - 在具有相同单词模式的数据框中交换 2 行