Laden...

BulkCopy: Excel -> SQL-Server

Erstellt von Counterfeit vor 16 Jahren Letzter Beitrag vor 16 Jahren 3.300 Views
C
Counterfeit Themenstarter:in
116 Beiträge seit 2004
vor 16 Jahren
BulkCopy: Excel -> SQL-Server

Beschreibung:

Mit folgendem Code, kann man per BulkCopy den Inhalt einer Excel Datei auf einen SQL-Server übertragen.


using System;
using System.Data.OleDb;
using System.Data.SqlClient;
namespace BulkCopy
{
    class Program
    {
        static void Main(string[] args)
        {
            // Der String der Verbindung zu der Excel-Datei
            string excelCon = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=EureExcelDatei.xls;Extended Properties=""Excel 8.0;HDR=YES;""";
            // Der String der Verbindung zu der Datenbank
            string sqlCon = @"Data Source=localhost;Initial Catalog=EureDatenbank;Integrated Security=True";
            // Verbindung mit der Excel-Datei herstellen
            using (OleDbConnection connection = new OleDbConnection(excelCon))
            {
                // Die abzufragenden Werte und den Namen des Blattes angeben [$]
                OleDbCommand command = new OleDbCommand("Select id, name FROM [Tabelle1$]", connection);
                connection.Open();
                // Command ausführen
                using (OleDbDataReader reader = command.ExecuteReader())
                {
                    // Ein BulkCopy auf den SQL-Server erstellen
                    using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlCon))
                    {
                        bulkCopy.DestinationTableName = "ExcelTabelle";
                        bulkCopy.WriteToServer(reader);
                    }
                }
            }
        }
    }
}

Dabei hat die Excel-Datei folgenden Aufbau:

Edit:
Hab nun ein Beispielbild angefügt.

Schlagwörter: Excel, SQL, BulkCopy, Bulk, Copy

1.820 Beiträge seit 2005
vor 16 Jahren

Hallo!

Da könnte man mit ein paar kleinen Änderungen doch auch ein interessantes Snippet machen, oder?

Nobody is perfect. I'm sad, i'm not nobody 🙁