Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android正在读取一个大文件_Java_Android_Database_Csv - Fatal编程技术网

Java Android正在读取一个大文件

Java Android正在读取一个大文件,java,android,database,csv,Java,Android,Database,Csv,我在资产文件夹中有一个CSV文件,其中包含10000多行数据。我想在创建数据库时将此数据插入SQLite数据库。我不能包含数据库,因为它是一个非常通用的应用程序,模型需要一个CSV文件。我不想读取所有10000行数据,然后一次从内存中插入。如何有效地完成这项任务?读完这一行后立即插入即可。所以,不要将这些行存储在内存中的某个arraylist中 例如 您可能希望在单个事务中执行此操作,以便在事务中途失败时可以回滚。在JDBC方面,您可能需要考虑 PraveRealStay-AdAppBuffh(

我在资产文件夹中有一个CSV文件,其中包含10000多行数据。我想在创建数据库时将此数据插入SQLite数据库。我不能包含数据库,因为它是一个非常通用的应用程序,模型需要一个CSV文件。我不想读取所有10000行数据,然后一次从内存中插入。如何有效地完成这项任务?

读完这一行后立即插入即可。所以,不要将这些行存储在内存中的某个arraylist中

例如

您可能希望在单个事务中执行此操作,以便在事务中途失败时可以回滚。在JDBC方面,您可能需要考虑<代码> PraveRealStay-AdAppBuffh() /Cudio> SuffueTeBuCH()/Cux>以批处理方式执行插入。可以在中找到一个例子


更新:作为一种完全不同但效率更高的替代方案,您也可以将Java置于故事之外并使用。

在这种情况下,最简单和最有效的方法是一次从文件中读取20-30-50行(或者可能是100行)并插入数据库,但是,您还需要运行一些测试,以查看在1go中可以读取的最佳行数,然后执行:-)

导入文件名表名

(类似于mysql中的加载数据)

其他:
禁用自动提交、自动刷新;阅读20行,提交,刷新。

谢谢你的回答,我在更新中还有一个问题,你提到了将CSV文件直接导入SQLite数据库的可能性。然而,我在网站上看不到任何Android实现。Android是否也有这个功能?
while ((line = reader.readLine()) != null) {
    insert(line);
}