У меня есть довольно простой пакет служб SSIS, который загружает файл .csv в таблицу SQL. Однако, когда пакет пытается прочитать источник .csv в задаче потока данных, я получаю сообщение об ошибке: «Разделитель столбца для столбца« X »не найден. Произошла ошибка при обработке файла« file.csv »для данных». строка "Y". "
В данном случае происходит то, что есть несколько строк из тысяч, которые содержат строку в четырехкратных кавычках, т. Е. "Джейн", Джилл "Доу". Удаление кавычек из этих строк в UltraEdit работает вручную, однако я пытаюсь автоматизировать эти пакеты. Производный столбец не работает, так как это проблема с разделителем.
Оказывается, мне нужна задача скрипта, чтобы удалить четверные кавычки, прежде чем пакет сможет загрузить файл должным образом. Приведенный ниже код (который я собрал из разных источников) принимается службами SSIS как безошибочный, но при выполнении возникает ошибка выполнения задачи DTS Script:
#region Namespaces
using System;
using System.Data;
using Microsoft.SqlServer.Dts.Runtime;
using System.Windows.Forms;
#endregion
namespace ST_a881d570d1a6495e84824a72bd28f44f
{
[Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute]
public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
{
public void Main()
{
// TODO: Add your code here
var fileContents = System.IO.File.ReadAllText(@"C:\\File.csv");
fileContents = fileContents.Replace("<body>", "<body onload='jsFx();' />");
fileContents = fileContents.Replace("</body>", "</body>");
System.IO.File.WriteAllText(@"C:\\File.csv", fileContents);
}
#region ScriptResults declaration
/// <summary>
/// This enum provides a convenient shorthand within the scope of this class for setting the
/// result of the script.
///
/// This code was generated automatically.
/// </summary>
enum ScriptResults
{
Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,
Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
};
#endregion
}
}
Альтернативный скрипт, который у меня есть:
{
string filepath = (string)Dts.Variables[@C:\\"File.csv"].Value;
var fileContents = System.IO.File.ReadAllText(filepath);
fileContents = fileContents.Replace("\"\"", "");
System.IO.File.WriteAllText(@C:\\"File.csv", fileContents);
}
Что я делаю не так?