Я выполнил задачу сценария, чтобы автоматизировать процесс загрузки и создания таблиц в моей базе данных. Проблема в том, что данные на португальском языке, и когда я загружаю данные в БД, я получаю неизвестные символы вместо слов с ударениями (поле GBEDDMOV).
GBEDNOPR;GBEDSEQMV;GBEDNCLI;GBEDNATR;GBEDNSEQ;GBEDBALC;GBEDCCB;GBEDVALOR;GBEDMOEDA;GBEDDATVL;GBEDDMOV
592828100;10;0;0;0;254;10010000.0;1340.0;EUR;0001-01-01;Saída para um caixa (notas)
592828100;20;0;0;0;254;10020000.0;46.4;EUR;0001-01-01;Saída para um caixa (moedas)
592828108;10;0;0;0;254;10030000.0;3.0;USD;0001-01-01;Saída para um caixa
592828218;10;0;0;0;223;10010000.0;650.0;EUR;0001-01-01;Saída para um caixa (notas)
592828218;20;0;0;0;223;10020000.0;57.68;EUR;0001-01-01;Saída para um caixa (moedas)
592828231;10;0;0;0;223;10030000.0;3.0;USD;0001-01-01;Saída para um caixa
592828347;10;0;0;0;147;10010000.0;435.0;EUR;0001-01-01;Saída para um caixa (notas)
592828347;20;0;0;0;147;10020000.0;46.73;EUR;0001-01-01;Saída para um caixa (moedas)
592828355;10;0;0;0;147;10030000.0;3.0;USD;0001-01-01;Saída para um caixa
592828363;10;0;0;0;38;10010000.0;1195.0;EUR;0001-01-01;Saída para um caixa (notas)
592828363;20;0;0;0;38;10020000.0;120.89;EUR;0001-01-01;Saída para um caixa (moedas)
592828375;10;0;0;0;38;10030000.0;3.0;USD;0001-01-01;Saída para um caixa
Я пытался изменить кодировку на ISO 8859-1 в Notepad ++, но это не сработало.
Любые подсказки о как это решить?
Используемый скрипт:
public void Main(){
// TODO: Add your code here
string datetime = DateTime.Now.ToString("yyyy_MM_dd_HH_mm");
try
{
//Declare Variables
string SourceFolderPath = Dts.Variables["User::SourceFolder"].Value.ToString();
string FileExtension = Dts.Variables["User::FileExtension"].Value.ToString();
string FileDelimiter = Dts.Variables["User::FileDelimiter"].Value.ToString();
string ArchiveFolder = Dts.Variables["User::ArchiveFolder"].Value.ToString();
string ColumnsDataType = Dts.Variables["User::ColumnsDataType"].Value.ToString();
string FileConnectionManager = Dts.Variables["User::FileConnectionManager"].Value.ToString();
// We can add a Schema Name to our tables (Ex: if we pick "STG" the table name will be STG.table_name)
//string SchemaName = Dts.Variables["User::SchemaName"].Value.ToString();
//string ColumnList = "";
SqlConnection myADONETConnection = new SqlConnection();
myADONETConnection = (SqlConnection) (Dts.Connections[FileConnectionManager].AcquireConnection(Dts.Transaction) as SqlConnection);
//Reading file names one by one
string[] fileEntries = Directory.GetFiles(SourceFolderPath, "*" + FileExtension);
foreach (string fileName in fileEntries)
{
//Writing Data of File Into Table
string TableName = "";
int counter = 0;
string line;
string ColumnList = "";
MessageBox.Show(fileName);
System.IO.StreamReader SourceFile =
new System.IO.StreamReader(fileName);
while ((line = SourceFile.ReadLine()) != null)
{
if (counter == 0)
{
ColumnList = "[" + line.Replace(FileDelimiter, "],[") + "]";
TableName = (((fileName.Replace(SourceFolderPath, "")).Replace(FileExtension, "")).Replace("\\", ""));
MessageBox.Show("name = '"+TableName+"'");
string CreateTableStatement = "IF EXISTS (SELECT * FROM sys.objects WHERE name = '"+TableName+"')";
CreateTableStatement += " DROP TABLE " + TableName;
CreateTableStatement += " CREATE TABLE " + TableName;
CreateTableStatement += "([" + line.Replace(FileDelimiter, "] " + ColumnsDataType + ",[") + "] " + ColumnsDataType + ")";
SqlCommand CreateTableCmd = new SqlCommand(CreateTableStatement, myADONETConnection);
CreateTableCmd.ExecuteNonQuery();
//MessageBox.Show(CreateTableStatement);
}
else
{
string query = "Insert into dbo.[" + TableName + "] (" + ColumnList + ") ";
query += "VALUES('" + line.Replace(FileDelimiter, "','") + "')";
//MessageBox.Show(query.ToString());
SqlCommand myCommand1 = new SqlCommand(query, myADONETConnection);
myCommand1.ExecuteNonQuery();
}
counter++;
}
SourceFile.Close();
Dts.TaskResult = (int)ScriptResults.Success;
}
}
catch (Exception exception)
{
// Create Log File for Errors
using (StreamWriter sw = File.CreateText(Dts.Variables["User::LogFolder"].Value.ToString()
+ "\\" + "ErrorLog_" + datetime + ".log"))
{
sw.WriteLine(exception.ToString());
Dts.TaskResult = (int)ScriptResults.Failure;
}
}
}
Описание таблицы:
GBEDNOPR varchar(255) Checked
GBEDSEQMV varchar(255) Checked
GBEDNCLI varchar(255) Checked
GBEDNATR varchar(255) Checked
GBEDNSEQ varchar(255) Checked
GBEDBALC varchar(255) Checked
GBEDCCB varchar(255) Checked
GBEDVALOR varchar(255) Checked
GBEDMOEDA varchar(255) Checked
GBEDDATVL varchar(255) Checked
GBEDDMOV varchar(255) Checked