So legen Sie das Trennzeichen fest, wenn Sie CSV-Dateien über OLEDB in C # @ importier

Ich muss einen komplexen Import in einen Microsoft SQL Server 2000 ausführen.

Da es in einem DTS zu kompliziert ist, versuche ich es mit einem kleinen C # -Programm zu tun, aber ich habe Probleme, wenn ich CSV-Dateien importieren muss: In dieser Datei werden Semikolons als Feldbegrenzer anstelle von Kommas verwendet und ich kann den OLE DB-Anbieter von .NET nicht dazu bringen, ihn zu erkennen.

Ich habe bereits verschiedene "Lösungen" im Netz gefunden, wie zBExtended Properties="Text; Format=Delimited" oder `` Extended Properties = "Text; Format = Delimited (;)"in the connection string or using a schema.ini` Datei ohne Erfolg.

Dies ist der aktuelle Code, den ich verwende:

DataTable Table = new DataTable();

using (OleDbConnection Connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}; Extended Properties=\"Text;HDR=Yes;Format=Delimited\""))
{
    Connection.Open();

    using (OleDbCommand Command = Connection.CreateCommand())
    {
        Command.CommandText = "select [Field 1], [Field 2] from [file.csv]";

        using (OleDbDataAdapter Adapter = new OleDbDataAdapter(Command))
        {
            Adapter.Fill(Table);
        }
    }
}

using (SqlConnection Connection = new SqlConnection("Data Source=server; Initial Catalog=database; User Id=user; Password=password;"))
{
    Connection.Open();

    using (SqlCommand Command = Connection.CreateCommand())
    {
        Command.CommandText = "insert into [table] ([field_1], [field_2], ...) values (@field_1, @field_2, ...)";

        Command.Parameters.Add("field_1", SqlDbType.Date, 0, "Field 1");
        Command.Parameters.Add("field_2", SqlDbType.VarChar, 100, "Field 2");
        ...

        using (SqlDataAdapter Adapter = new SqlDataAdapter())
        {
            Adapter.InsertCommand = Command;

            Adapter.Update(Table);
        }
    }
}

Haben Sie eine Idee, wie Sie das Semikolon als Feldtrennzeichen verwenden können, ohne auf externe Bibliotheken angewiesen zu sein?

Anmerkungen

Das Bit "ohne auf externe Bibliotheken angewiesen zu sein" liegt daran, dass ich die Datei direkt in die Datenbank importieren muss und keine Bibliothek, die ich gefunden habe, dies kann (sie geben Zeichenfolgen zurück), und unser PHB lässt nicht einmal einen Cent für eine kommerzielle Lösung fallen .Ich weiß, dass ich die Datei über ein DTS importieren kann, aber ich muss vor und nach dem Import komplexe Verzweigungen des Workflows und der Dateiänderungen durchführen. Dies würde dazu führen, dass Sie in das DTS hinein- und aus ihm herausspringen.Es wäre nicht praktikabel, alles innerhalb des DTS zu tunfür mic, da ich mit ActiveX- und VBScript-Codierung nicht so vertraut bin.

ielen Dank im Voraus, Andre

Edit 1 - @andyb: Programmcode für @ testschema.ini Ansatz

String ConnectionString = String.Format("Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}; Extended Properties=\"Text\"", Environment.CurrentDirectory);

DataTable Table = new DataTable();

using (OleDbConnection Connection = new OleDbConnection(ConnectionString))
{
    Connection.Open();

    using (OleDbCommand Command = Connection.CreateCommand())
    {
        Command.CommandText = "select * from [file.csv]";

        using (OleDbDataAdapter Adapter = new OleDbDataAdapter(Command))
        {
            Adapter.Fill(Table);
        }
    }
}