sqlbulkcopy utilizando sql CE

c# sqlbulkcopy sql-server-ce

Pregunta

¿Es posible usar SqlBulkcopy con Sql Compact Edition, por ejemplo, archivos (* .sdf)?

Sé que funciona con SQL Server 200 Up, pero quería comprobar la compatibilidad con CE.

Si no lo hace, ¿alguien más sabe la forma más rápida de obtener un archivo de tipo CSV en SQL Server CE sin usar DataSets (haga clic aquí)?

Respuesta experta

No, no creo que SqlBulkCopy sea ​​compatible (consulte MSDN ). ¿Tal vez incluir los datos como xml y eliminarlos en el servidor? SQL / XML es bastante bueno en 2005/2008.

Es posible que también desee ver los parámetros de valor de tabla, pero dudo que CE los admita.


Respuesta popular

BULKCOPY no es compatible con SQL CE. Esta es la forma más rápida si tiene un gran número de filas en su tabla; insertar es demasiado 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);
                }
            }
        }
    }
}

Benchmark: mesa con 34370 filas

  • con inserciones: 38 filas escritas por segundo

  • de esta manera: 260 filas escritas por segundo



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué