You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel表经SSIS导入SQL Server,移除TEXT列空行多余换行

处理Excel文本列多余换行的两种方案

方案1:SSIS加载过程中处理

派生列组件快速替换

Excel中Alt+Enter生成的换行符为\r\n,可通过嵌套REPLACE函数批量清理连续换行:
在派生列中创建新列(或覆盖原列),使用表达式:

REPLACE(REPLACE(TEXT, "\r\n\r\n", "\r\n"), "\r\n\r\n", "\r\n")

多次嵌套是为了处理3个及以上的连续换行(第一次将3个替换为2个,第二次替换为1个)。

脚本组件灵活处理

如果需要更精准的过滤(比如同时清理空行的前后空格),添加脚本组件,用C#编写逻辑:

// 假设输入列名为TextCol,输出列名为CleanedText
string rawText = Row.TextCol;
// 替换所有连续换行为单个换行
string cleaned = System.Text.RegularExpressions.Regex.Replace(rawText, @"(\r\n)+", "\r\n");
// 移除首尾可能的空换行
Row.CleanedText = cleaned.Trim('\r', '\n');

方案2:加载到SQL Server后处理

批量替换连续换行

针对已入库的数据,使用SQL语句直接更新:

UPDATE YourTableName
SET [TEXT] = REPLACE(REPLACE([TEXT], CHAR(13)+CHAR(10)+CHAR(13)+CHAR(10), CHAR(13)+CHAR(10)), 
                     CHAR(13)+CHAR(10)+CHAR(13)+CHAR(10), CHAR(13)+CHAR(10))
WHERE [TEXT] LIKE '%' + CHAR(13)+CHAR(10)+CHAR(13)+CHAR(10) + '%'

注:CHAR(13)对应回车,CHAR(10)对应换行,是SQL Server中存储的换行符格式。

拆分过滤后重新拼接(SQL Server 2016+)

如果存在大量空行(包含空格的空行),可拆分文本后过滤空内容再拼接:

UPDATE t
SET [TEXT] = STRING_AGG(LTRIM(RTRIM(s.value)), CHAR(13)+CHAR(10))
FROM YourTableName t
CROSS APPLY STRING_SPLIT(t.[TEXT], CHAR(13)+CHAR(10)) s
WHERE LTRIM(RTRIM(s.value)) <> ''
GROUP BY t.ID, t.NAME

内容的提问来源于stack exchange,提问作者HEV

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 21:30:56