SQLite数据库如何批量插入数据

SQLite数据库如何批量插入数据,第1张

解决方法:

添加事务处理,把5000条插入作为一个事务

dataBasebeginTransaction(); //手动设置开始事务

//数据插入 *** 作循环

dataBasesetTransactionSuccessful(); //设置事务处理成功,不设置会自动回滚不提交

dataBaseendTransaction(); //处理完成

数据库「倒出来」:

sqlite3 filmdb "dump" > outputsql

利用输出的资料,建立一个一模一样的数据库(加上以上指令,就是标准的SQL数据库

备份了):

sqlite3 filmdb < outputsql

在大量插入资料时,你可能会需要先打这个指令:

begin;

插入完资料后要记得打这个指令,资料才会写进数据库中:

commit;

declare @i int

set @i=0

while(@i<1000)

begin

insert into a(url) values('XXXXXX_'+cast(@i as varchar))

set @i=@i+1

end

在实际工作中,有时经常地时行mysql数据库的导入和导入 *** 作,但对于大型sql文件导入时,phpmyadmin是不行的,有太多限制,比如记录,内存等!

比较好的办法仍是用mysql的source命令:

一、在客户端下 *** 作:

1、进行入客户端

2、mysql>use 数据库名(如果没有,先建一个)

3、mysql>set names 'utf8'; (一般看导入的是什么格式的文件)

4、mysql>source d:\aaasql;

即可正常导入,如果有错,可以看出错提示

二、PHP文件 *** 作:

建立aphp

里面有下面内容

mysql_connet('xxxx');

mysql_query("set names 'utf8'");

mysql_query("source d:\aaasql'");

原理同上,主要方便了无法使用命令行用户的 *** 作

还好,没有迟到。

你可以在数据库中写一个存贮过程,然后通过StoreProcedure语句在C#中执行,可以建一个对于整个数据库通用的存贮过程然后一次性在数据库中抓取数据到内存并通过回发来刷新数据,这种方法是很费内存但可以提高效率。

//最快的方法 10000记录 23MS

public static void insert() {  

        // 开时时间  

        Long begin = new Date()getTime();  

        // sql前缀  

        String prefix = "INSERT INTO tb_big_data (count, create_time, random) VALUES ";  

        try {  

            // 保存sql后缀  

            StringBuffer suffix = new StringBuffer();  

            // 设置事务为非自动提交  

            connsetAutoCommit(false);  

            // Statement st = conncreateStatement();  

            // 比起st,pst会更好些  

            PreparedStatement pst = connprepareStatement("");  

            // 外层循环,总提交事务次数  

            for (int i = 1; i <= 100; i++) {  

                // 第次提交步长  

                for (int j = 1; j <= 10000; j++) {  

                    // 构建sql后缀  

                    suffixappend("(" + j  i + ", SYSDATE(), " + i  j  

                             Mathrandom() + "),");  

                }  

                // 构建完整sql  

                String sql = prefix + suffixsubstring(0, suffixlength() - 1);  

                // 添加执行sql  

                pstaddBatch(sql);  

                // 执行 *** 作  

                pstexecuteBatch();  

                // 提交事务  

                conncommit();  

                // 清空上一次添加的数据  

                suffix = new StringBuffer();  

            }  

            // 头等连接  

            pstclose();  

            connclose();  

        } catch (SQLException e) {  

            eprintStackTrace();  

        }  

        // 结束时间  

        Long end = new Date()getTime();  

        // 耗时  

        Systemoutprintln("cast : " + (end - begin) / 1000 + " ms");  

    }

以上就是关于SQLite数据库如何批量插入数据全部的内容,包括:SQLite数据库如何批量插入数据、求一sql批量插入数据库的语句、如何在mysql中批量导入大的sql文本文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9550615.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存