优化SQLite3数据库插入10000条数据

如果用普通的方式向数据库中插入10000条数据,会不会妨碍用户体验呢?答案是肯定会,那么如何优化我们的数据库的各种操作呢。

(1)使用事务。

 String sql = "insert into bus_line_station(direct,line_name,sno,station_name) values(?,?,?,?)";
        SQLiteStatement stat = db.compileStatement(sql);
        db.beginTransaction();
        for (Station line : busLines) {
            stat.bindLong(1, line.direct);
            stat.bindString(2, line.lineName);
            stat.bindLong(3, line.sno);
            stat.bindString(4, line.stationName);
            stat.executeInsert();
        }
        db.setTransactionSuccessful();
        db.endTransaction();
        db.close();
可以大大减少插入数据库所需的时间。

那么为啥呢?你如果是普通的插入数据库的方法的话,插入10000条数据需要执行10000次的  事务开始+执行sql+事务结束,而上面事务开始和事务结束只执行了一次。大部分的时间实在执行sql。

(2)http://blog.csdn.net/hustpzb/article/details/6600591  这个不知道好使不好使。

(3)开启一个线程,执行完插入数据库的操作之后通过Handler来发消息。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 1. 使用 Python 的 sqlite3 模块连接数据库并执行 SQL 语句,创建一个临时表,并将重复数据插入其中。 2. 使用 SELECT DISTINCT 命令在新表中查询所有不重复的数据。 3. 使用 DELETE 命令删除原表中的重复数据。 4. 使用 INSERT INTO 命令将新表中的数据插入原表。 5. 删除临时表。 代码示例: ``` import sqlite3 # 连接数据库 conn = sqlite3.connect('test.db') cursor = conn.cursor() # 创建临时表 cursor.execute(''' CREATE TEMPORARY TABLE temp_table AS SELECT DISTINCT * FROM test_table; ''') # 删除重复数据 cursor.execute(''' DELETE FROM test_table WHERE rowid NOT IN (SELECT MIN(rowid) FROM test_table GROUP BY column1, column2); ''') # 插入数据 cursor.execute(''' INSERT INTO test_table SELECT * FROM temp_table; ''') # 删除临时表 cursor.execute('''DROP TABLE temp_table;''') # 提交事务 conn.commit() # 关闭连接 cursor.close() conn.close() ``` 注意:上述代码仅供参考,需要根据实际情况调整表名和字段名。 ### 回答2: 要去除SQLite3数据库中的重复数据,可以使用Python编程语言及SQLite3数据库的特定功能实现。下面是一种可能的方法: 1. 首先,连接到SQLite3数据库。你可以使用Python内置的sqlite3模块,使用connect()方法来建立数据库连接。例如: ```python import sqlite3 conn = sqlite3.connect('your_database.db') ``` 2. 接下来,创建一个游标对象,该对象可以执行SQL查询和操作。例如: ```python cursor = conn.cursor() ``` 3. 使用SELECT语句来查询数据库中的重复数据。你可以编写一个SQL查询语句,使用GROUP BY和HAVING子句来过滤出重复数据。例如: ```python query = "SELECT column1, column2, COUNT(*) FROM your_table GROUP BY column1, column2 HAVING COUNT(*) > 1" duplicate_rows = cursor.execute(query).fetchall() ``` 4. 迭代重复数据的结果集,使用DELETE语句来删除重复数据。你可以编写一个SQL删除语句,使用WHERE子句和重复数据件来删除。例如: ```python for row in duplicate_rows: column1 = row[0] column2 = row[1] delete_query = f"DELETE FROM your_table WHERE column1 = '{column1}' AND column2 = '{column2}'" cursor.execute(delete_query) conn.commit() # 提交更改 ``` 5. 最后,关闭数据库连接,释放资源。例如: ```python conn.close() ``` 通过以上步骤,你可以使用Python和SQLite3数据库的功能去除重复数据。请记得备份数据库,在进行删除操作之前,仔细检查代码,并确保满足你的需求。 ### 回答3: 在SQLite3数据库中,可以使用Python编程语言去除重复数据。以下是一种可能的方法: 1. 首先,连接到SQLite3数据库。可以使用Python的sqlite3模块来实现连接: ```python import sqlite3 conn = sqlite3.connect('database.db') ``` 其中,'database.db'是数据库的文件路径,需要根据实际情况进行修改。 2. 接下来,创建一个游标对象,以便执行数据库操作: ```python cursor = conn.cursor() ``` 3. 使用SQL语句查询数据库,找出重复数据。可以使用GROUP BY和HAVING子句来实现: ```python cursor.execute("SELECT col1, col2, COUNT(*) FROM table_name GROUP BY col1, col2 HAVING COUNT(*) > 1;") ``` 其中,'table_name'是表的名称,'col1'和'col2'是列的名称,需要根据实际情况进行修改。 4. 获取查询结果: ```python duplicates = cursor.fetchall() ``` 5. 遍历重复数据,删除其中的一记录。可以使用DELETE语句来实现: ```python for duplicate in duplicates: cursor.execute("DELETE FROM table_name WHERE col1=? AND col2=? LIMIT 1;", duplicate[:-1]) ``` 其中,duplicate[:-1]用于获取除了COUNT(*)以外的列的值。 6. 提交更改并关闭数据库连接: ```python conn.commit() conn.close() ``` 通过以上操作,可以去除SQLite3数据库中的重复数据。请注意,在使用DELETE语句时,最好先进行备份,以防万一。此外,还可以根据实际情况进行适当调整和优化

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值