sqlbulkcopy usando sql CE

c# sqlbulkcopy sql-server-ce

Domanda

È possibile utilizzare SqlBulkcopy con file Sql Compact Edition ad esempio (* .sdf)?

So che funziona con SQL Server 200 Up, ma volevo verificare la compatibilità CE.

In caso contrario, qualcun altro conosce il modo più rapido per ottenere un file di tipo CSV in SQL Server CE senza utilizzare DataSet (rilanciare qui)?

Risposta esperta

No, non penso che SqlBulkCopy sia supportato (vedi MSDN ). Forse gettare i dati in formato xml e separarli dal server? SQL / XML è abbastanza buono nel 2005/2008.

Potresti anche voler esaminare i parametri del valore di tabella, ma dubito che CE li supporti.


Risposta popolare

BULKCOPY non è supportato in SQL CE. Ecco il modo più veloce se hai un numero enorme di righe nella tua tabella; l'inserimento è troppo lento!

using (SqlCeConnection cn = new SqlCeConnection(yourConnectionString))
{
    if (cn.State == ConnectionState.Closed)
        cn.Open();

    using (SqlCeCommand cmd = new SqlCeCommand())
    {
        cmd.Connection = cn;
        cmd.CommandText = "YourTableName";
        cmd.CommandType = CommandType.TableDirect;

        using (SqlCeResultSet rs = cmd.ExecuteResultSet(ResultSetOptions.Updatable | ResultSetOptions.Scrollable))
        {
            SqlCeUpdatableRecord record = rs.CreateRecord();

            using (var sr = new System.IO.StreamReader(yourTextFilePath))
            {
                string line;
                while ((line = sr.ReadLine()) != null)
                {
                    int index = 0;
                    string[] values = line.Split('\t');

                    //write these lines as many times as the number of columns in the table...
                    record.SetValue(index, values[index++] == "NULL" ? null : values[index - 1]);
                    record.SetValue(index, values[index++] == "NULL" ? null : values[index - 1]);
                    record.SetValue(index, values[index++] == "NULL" ? null : values[index - 1]);

                    rs.Insert(record);
                }
            }
        }
    }
}

Punto di riferimento: tabella con 34370 righe

  • con inserti: 38 righe scritte al secondo

  • in questo modo: 260 righe scritte al secondo



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché