INSERT INTO XXX SELECT ... from YYY

解决方案 »

  1.   

     insert into [正式库]..表名 select * from [测试库]..相同表名(不需要把自增长列放在里面)
      

  2.   

    和sql操作类似的。你现在sqlite客户端测试通过再写代码就好
      

  3.   


    数据已到客户端Dataset对象里,现在我的做法是从Dataset里取出,再插入到SQLite的表里
      

  4.   


    我现在是
           for(int i=0; i< ds.Tables[0].Rows.Count;i++)
                    {
                        DataRow dr =ds.Tables[0].Rows[i]; 
                         /////读取字段
                         ////构造INSERT SQL语句,然后
                         SQLiteCommand cmd = new System.Data.SQLite.SQLiteCommand();
                        cmd.CommandText = sb.ToString();
                       
                        cmd.Connection = conn;
                        cmd.ExecuteNonQuery();
             }
    ///
    现在这样没问题,就是速度 有点慢,一分钟 插入1500条左右,您这方法 能具体点么?
      

  5.   

    一秒钟3000条才是正常的速度。
    我现在是
           for(int i=0; i< ds.Tables[0].Rows.Count;i++)
                    {
                        DataRow dr =ds.Tables[0].Rows[i]; 
                         /////读取字段
                         ////构造INSERT SQL语句,然后
                         SQLiteCommand cmd = new System.Data.SQLite.SQLiteCommand();
                        cmd.CommandText = sb.ToString();
                       
                        cmd.Connection = conn;
                        cmd.ExecuteNonQuery();
             }
    ///
    现在这样没问题,就是速度 有点慢,一分钟 插入1500条左右,您这方法 能具体点么?
    暂时没有代码给你抄。贴出无关的代码也不是你要的。只是告诉你问题在哪里:你不应该不断地创建DbConnection。你应该在循环外仅创建一个DbConnection,然后再创建一个 DbTrsansation,然后循环里的代码执行ExecuteNonQuery。最后在循环之后,执行一次 DbTransaction的 Commit 指令。这对于Sqlite这类在行加锁机制上比较低级的程序尤其重要。不要每一条记录的处理都创建一个独立的数据库事务(transaction),而应该仅创建一个,或者是仅创建很少的(例如每当处理1000条记录才创建一个)。