sqlbulkcopy使用sql CE

c# sqlbulkcopy sql-server-ce

是否可以將SqlBulkcopy與Sql Compact Edition一起使用,例如(* .sdf)文件?

我知道它適用於SQL Server 200 Up,但想檢查CE兼容性。

如果沒有其他人知道在不使用DataSet的情況下將CSV類型文件放入SQL Server CE的最快方法(請點擊這裡)?

專家解答

不,我不認為支持SqlBulkCopy (參見MSDN )。也許將數據作為xml拋出並在服務器上將其拆開? SQL / XML在2005/2008年非常好。

您可能還想查看table-value-parameters,但我懷疑CE是否支持這些參數。


熱門答案

SQL CE不支持BULKCOPY。如果表中有大量行,這是最快的方法;插入太慢了!

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);
                }
            }
        }
    }
}

基準:34370行的表格

  • 帶插入:每秒寫入38行

  • 這樣:每秒寫入260行



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow