将 UTF8 转换为 UCS-2 / UTF-16 以提供 SSIS 批量插入任务的快速方法
Fast way to convert UTF8 to UCS-2 / UTF-16 to feed SSIS Bulk insert task
我现在的情况:
我正在使用 SSIS 2014 以便每天加载 379 个文件(来自 AS400 的制表符分隔文件 UTF8 ) 占用 20GB .
我的 SSIS 流程是这样的:
第一个任务是脚本任务:
string path= (string)Dts.Variables["dataPath"].Value;
string name = (string)Dts.Variables["fileName"].Value;
string from = Path.Combine(path, name) + ".tsv";
string to = Path.ChangeExtension(from, "txt");
Dts.Log("Starting "+to.ToUpper(),0,null);
using (StreamReader reader = new StreamReader(from, Encoding.UTF8, false, 1000000))
using (StreamWriter writer = new StreamWriter(to,false, Encoding.Unicode, 1000000))
{
while (reader.Peek() >= 0)
{
writer.WriteLine(reader.ReadLine());
}
}
我需要加快这个流程。我还没有优化的唯一部分是脚本转换为 unicode..
我试图禁用此任务并在批量插入任务中指定该文件是代码页 650001,但我收到服务器不支持此代码页的错误消息。显然 SSIS 不会转换成 fly utf8->unicode 然后发送到 SQL 服务器。
所以我坚持在批量插入之前转换文件。
现在我正在寻找最快的方法。目前的方法很快,但我需要知道如何使用其他技术在此步骤中获得性能,例如:
-Powershell ?
-Command-line 应用程序(自己构建的控制台应用程序或任何 open-source?)
谢谢大家
看看这是否比您当前的方法更快:
Get-Content $dataPath$fileName.tsv -Encoding UTF8 -ReadCount 2000 |
Add-Content -Encoding Unicode $dataPath$fileName.txt
我尝试了 powershell 选项,它的最佳状态与我现有 ssis 设置的速度相匹配。这是一个加载、转换、批量插入数据库的单一任务。
我还尝试了一个控制台 C# 应用程序,但它没有比 .
所以我最终修改了 SSIS 任务,如下所示:
我只是将任务分成 4 个任务,每个任务都处理单独的文本文件集。
我现在的情况:
我正在使用 SSIS 2014 以便每天加载 379 个文件(来自 AS400 的制表符分隔文件 UTF8 ) 占用 20GB .
我的 SSIS 流程是这样的:
第一个任务是脚本任务:
string path= (string)Dts.Variables["dataPath"].Value;
string name = (string)Dts.Variables["fileName"].Value;
string from = Path.Combine(path, name) + ".tsv";
string to = Path.ChangeExtension(from, "txt");
Dts.Log("Starting "+to.ToUpper(),0,null);
using (StreamReader reader = new StreamReader(from, Encoding.UTF8, false, 1000000))
using (StreamWriter writer = new StreamWriter(to,false, Encoding.Unicode, 1000000))
{
while (reader.Peek() >= 0)
{
writer.WriteLine(reader.ReadLine());
}
}
我需要加快这个流程。我还没有优化的唯一部分是脚本转换为 unicode..
我试图禁用此任务并在批量插入任务中指定该文件是代码页 650001,但我收到服务器不支持此代码页的错误消息。显然 SSIS 不会转换成 fly utf8->unicode 然后发送到 SQL 服务器。
所以我坚持在批量插入之前转换文件。
现在我正在寻找最快的方法。目前的方法很快,但我需要知道如何使用其他技术在此步骤中获得性能,例如:
-Powershell ?
-Command-line 应用程序(自己构建的控制台应用程序或任何 open-source?)
谢谢大家
看看这是否比您当前的方法更快:
Get-Content $dataPath$fileName.tsv -Encoding UTF8 -ReadCount 2000 |
Add-Content -Encoding Unicode $dataPath$fileName.txt
我尝试了 powershell 选项,它的最佳状态与我现有 ssis 设置的速度相匹配。这是一个加载、转换、批量插入数据库的单一任务。
我还尝试了一个控制台 C# 应用程序,但它没有比 .
所以我最终修改了 SSIS 任务,如下所示:
我只是将任务分成 4 个任务,每个任务都处理单独的文本文件集。