gpt4 book ai didi

c# - SSIS 2015 脚本任务在 C# 或 VB 中将文本文件转换为 UTF8

转载 作者:行者123 更新时间:2023-11-30 20:33:40 25 4
gpt4 key购买 nike

我想将生成的 txt 文件转换为 UTF8 格式的文件,以便我可以通过 Polybase 将其加载到我的 Azure SQL DW 中。要求源文件为UTF8格式。

MSDN 有一个“IO Streaming example”HERE非常适合一份工作。不过,我正在尝试为大约 30 个表构建一个 SSIS 解决方案。我相信使用这种方法会导致竞争条件,当另一个 SSIS 包需要它时,PS 脚本将被 1 个 SSIS 包锁定。

我是一名 sql 开发人员,而不是 .NET 开发人员,所以请原谅我。假设我知道如何将参数传递到脚本任务中,如何将上述内容转换为 SSIS C# 脚本任务?

来自 MSDN 的 PowerShell 代码

#Static variables
$ascii = [System.Text.Encoding]::ASCII
$utf16le = [System.Text.Encoding]::Unicode
$utf8 = [System.Text.Encoding]::UTF8
$ansi = [System.Text.Encoding]::Default
$append = $False

#Set source file path and file name
$src = [System.IO.Path]::Combine("<MySrcFolder>","<MyUtf8stage>.txt")

#Set source file encoding (using list above)
$src_enc = $ascii

#Set target file path and file name
$tgt = [System.IO.Path]::Combine("<MyDestFolder>","<MyFinalstage>.txt")

#Set target file encoding (using list above)
$tgt_enc = $utf8

$read = New-Object System.IO.StreamReader($src,$src_enc)
$write = New-Object System.IO.StreamWriter($tgt,$append,$tgt_enc)

while ($read.Peek() -ne -1)
{
$line = $read.ReadLine();
$write.WriteLine($line);
}
$read.Close()
$read.Dispose()
$write.Close()
$write.Dispose()

更新

我发现了一个类似的帖子,我可以根据自己的需要进行调整,我发誓在发布之前我搜索了很多。无论如何,这是为我工作的。如果您无论如何都看到改进它,请分享:

public void Main()
{
//$Package::SourceSQLObject = tablename
//$Package::StageFile_DestinationFolderPath = rootpath eg "C:\temp\"

string path = (string)Dts.Variables["$Package::StageFile_DestinationFolderPath"].Value;
string name = (string)Dts.Variables["$Package::SourceSQLObject"].Value;
string from = Path.Combine(path, name) + ".csv";
string to = Path.ChangeExtension(from, "txt");
Dts.Log("Starting " + to.ToUpper(), 0, null);
using (StreamReader reader = new StreamReader(from, Encoding.ASCII, false, 10))
using (StreamWriter writer = new StreamWriter(to, false, Encoding.UTF8, 10))
{
while (reader.Peek() >= 0)
{
writer.WriteLine(reader.ReadLine());
}
}
Dts.TaskResult = (int)ScriptResults.Success;

最佳答案

您的代码表明您正在尝试将 ASCII 文件转换为 UTF-8,但是 article还声明如下:

As UTF-8 uses the same character encoding as ASCII PolyBase will also support loading data that is ASCII encoded.

所以我的建议是先使用 Polybase 尝试转换文件,在尝试转换文件之前检查是否存在任何转换问题。

关于c# - SSIS 2015 脚本任务在 C# 或 VB 中将文本文件转换为 UTF8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39986351/

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