1. 程式人生 > >Android操作sqlite匯入大量資料耗時的解決方法

Android操作sqlite匯入大量資料耗時的解決方法

在Android開發中,需要向sqlite中匯入大量資料,按照一般做法是很耗時的,測試了一下,匯入一條資料在100ms左右,按照這樣的做法,如果匯入1萬條資料,大約得花17分鐘,經過實際測試,確實花了17分鐘左右。

解決耗時的辦法是利用sqlite的事務來處理。方法如下:

首先獲取database物件,然後執行如下方法:

db.beginTransaction();      //手動設定開始事務 
//資料插入操作迴圈 

//update insert delete select可以迴圈巢狀操作 
db.setTransactionSuccessful();        //設定事務處理成功,不設定會自動回滾不提交 
db.endTransaction();        //處理完成

測試了一下,如果匯入1萬條資料,大約耗時20秒左右。效能比之前提升了一大截。

比如

    public int insert(Uri uri, ContentValues[] values) {

        SQLiteDatabase db = mOpenHelper.getWritableDatabase();

        db.beginTransaction();

        try {

            int numValues = values.length;

            for (int i = 0; i < numValues; i++) {

                   db.insertOrThrow(tablename, null, values);

            }

            db.setTransactionSuccessful();

        } finally {

            db.endTransaction();

        }

         return values.length;

    }


相關推薦

Android操作sqlite匯入大量資料耗時解決方法

在Android開發中,需要向sqlite中匯入大量資料,按照一般做法是很耗時的,測試了一下,匯入一條資料在100ms左右,按照這樣的做法,如果匯入1萬條資料,大約得花17分鐘,經過實際測試,確實花

AndroidSQLite插入大量資料的效率優化

原以為上面的程式碼中,ContentResolver幫忙處理了事務機制。但事實上applyBatch傳入的每條ContentProviderOperation都包含Uri,而ContentResolver並不會記錄或者比較Uri的異同;所以它把每條ContentProviderOperation都當作獨立的

Python使用SQLite插入大量資料耗時問題

前言 使用Python爬蟲代理IP時,最先使用了sqlite作為儲存ip資料庫,sqlite簡單、靈活、輕量、開源,和檔案系統一樣。而當大量插入爬取的資料時,出現了嚴重的耗時,檢視一起資料後,發現:sqlite在每條insert都使用commit的時候,就相當

mysql匯入大量資料時報MySQL server has gone away錯誤的解決辦法

  在我們使用mysql匯入大檔案sql時可能會報MySQL server has gone away錯誤,該問題是max_allowed_packet配置的預設值設定太小,只需要相應調大該項的值之後再次匯入便能成功。該項的作用是限制mysql服務端接收到的包的大小,因此如

MongoDB匯入大的json、csv資料檔案,匯入不完全的解決方法

轉載文章:轉自:點選開啟“https://blog.csdn.net/qq_33206732/article/details/78788483#commentsedit” 昨天,做了一個東西,就是把生產上的mongodb資料使用mongoexport匯出了一個.json檔案用於本地做分析使用,裡

Android 操作SQLite基本用法

一.SQLite的介紹 1.SQLite簡介 SQLite是一款輕型的資料庫,是遵守ACID的關聯式資料庫管理系統,它的設計目標是嵌入  式的,而且目前已經在很多嵌入式產品中使用了它,它佔用資源非常的低,在嵌入式裝置中,可能只需要幾百K的記憶體就夠了。它能夠支援 Window

AndroidSQLite本地快取資料

一、在android中資料本地儲存分為SQLite資料儲存,Sharedprferences資料的儲存,File儲存,ContentProvider、還有一種為網路(Network) 1、在這裡主要就說明SQLite資料的儲存, SQLite是輕量級嵌入式資料庫引擎,它支援

spark解決方案系列--------1.spark-streaming實時Join儲存在HDFS大量資料解決方案

    spark-streaming實時接收資料並處理。一個非常廣泛的需求是spark-streaming實時接收的資料需要跟儲存在HDFS上的大量資料進行Join。要實現這個需求保證實時性需要解決以下幾個問題: 1.spark-streaming的資料接收間隔往往很小,

NaviCat for Mysql匯入資料失敗解決方法

個人在工作中遇到了這個問題,來分享一下我請教來的方法: 1.首選從NaviCat for Mysql轉儲你要的sql檔案,eg:1.sql。 2.用編輯器開啟1.sql,在裡面加入一行程式碼:use  1或者creat  1 (1是你的資料庫名稱),如下: 3.然後開啟N

程式設計中大量資料解決辦法

一、前言 在中小型企業開發的時候,對應的伺服器端往往只有一臺主機(例如:阿里雲伺服器),上面儲存了應用程式和資料庫,當資料過大的時候就會程式崩潰,甚至記憶體溢位,資料庫直接宕機,處理方法是應用程式和資料庫放在不同的主機中。 二、處理方法 2.1 快取 使用快取技術(當資料

Android操作SQLite資料庫

文章背景 程式猿或是程式媛們在開發Android專案的時候,難免需要在客戶端資料本地持久化,那麼Android中資料本地儲存有四種,分別是SharedPreferences、檔案儲存、SQLite儲存資料、ContentProvider儲存資料。

Android自動化測試遇到的問題及解決方法(1)

粘貼 png family 學習 再次 jmeter log 初始 mage 編者按:本文是小小小提姆在使用自動化測試工具TestWriter時的一點使用心得~我叫小小小提姆,是一名在IT行業的洪流中力爭上遊的軟件測試員,個人軟件測試擅長方向:1、功能測試(熟悉Fiddle

hive資料傾斜解決方法

Hive的過程中經常會碰到資料傾斜問題,資料傾斜基本都發生在group、join等需要資料shuffle的操作中,這些過程需要按照key值進行資料彙集處理,如果key值過於集中,在彙集過程中大部分資料彙集到一臺機器上,這就會導致資料傾斜。 具體表現為:作業經常reduce完成在99%後一

織夢列表頁資料重複解決方法

dede:list 列表調用出來的新聞,每一個都重複了兩次,怎麼解決? 解決方法 注意:以下操作,所有文件會被清空,欄目不會清空 後臺-系統-SQL命令列工具-執行 TRUNCATE #@_addonarticle; TRUNCATE #@_arccache; TRUNCATE #@_arctiny;

表格提交後獲取到的中文資料亂碼解決方法

<% request.setCharacterEncoding("UTF-8");%>   這裡是設定字元編碼的方法,編碼具體可以自行設定。        這段程式碼一定要加到獲取表單資料(如re

學習Android過程中遇到的問題及解決方法——網路請求

在學習Android的網路連線時遇到崩潰或IOException異常(出現的問題就這兩個,但是不穩定)的問題,先上程式碼,看看哪裡錯了(答案在文末) activity_main.xml: 1 <?xml version="1.0" encoding="utf-8"?> 2 <

學習Android過程中遇到的問題及解決方法——電話監聽

也許有時你會有這樣一個需求:通電話時有一個重要的事需要記下來或者和一個陌生人特別是大騙子通話時,這是就想如果能把通話錄下來就方便多了。(這才是我寫這個程式碼的目的!!!) 在此過程中,犯了一個很大的錯誤。對電話狀態還不熟悉就開始程式設計,使得我就算編寫正確也出現各種bug。 先將程式碼列出來,供大家參考,

Failed to resolve:com.android.support:appcompat-v7:27.+ 問題的解決方法

新建一個專案,出現 Failed to resolve:com.android.support:appcompat-v7:27.+ 問題: 1 分析 android studio 中的編譯器版本與 build.gradle(app 下)不對應造成的。 開啟 build.

Android Studio Gradle Metadata特別慢的解決方法

Android Studio Gradle Metadata特別慢的解決方法 更改build.gradle  buildscript { repositories { // jcenter() // jcenter(){ url 'http://

Android開發過程中的坑及解決方法收錄(四)

1.某個控制元件要放在Linearlayout佈局的底部(底部導航條) <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.