急急急!java实现将txt文件数据导入数据库中 20C

急急急!java实现将txt文件数据导入数据库中。百万级别的数据。各位有什么好的办法吗

6个回答

代码参考:https://blog.csdn.net/jojoy_828/article/details/1911236

为了优化速度,可以做一些优化:
(1)确保表没有插入触发器和关系,如果有,先暂时删除
(2)不要建立索引
(3)关闭日志

weixin_42101525
weixin_42101525 同求
一年多之前 回复

首先这些数据是不是规范数据?如果规范的话,可以这么做
1. 通过 head 命令等其他工具查看文件前几行数据,分析规律,主要包括 字段的分隔符是什么,字段属性是什么,字段对应的列名是什么?
2. 通过Java缓存、获取文件句柄,然后每次读取一行到缓存中,如果没有创建表结构先创建表结构,分割每行字符,然后拼接成对应sql语句,然后通过for循环执行 sql语句插入数据,如果这些数据都是可信的
3. 为了插入的高效,可以一次插入 多个数据 value(),... 还有暂停这个库的所有连接、查询等其他服务
4. 不推荐使用多线程进行操作,防止发生死锁现象,这么大的数据,毕竟纯粹的IO流,依次插入既可以保证一致性也可以出错快速定位出错在哪一行
5. 如果数据不遵守规范,哈哈,放弃治疗吧,孩子,哈哈,祝你好运

用LOAD DATA INFILE
请参见这里

JAVA调用SHELL,SHELL调用SQL LOADER

你的题目是txt文件导入数据库,那肯定是规范的格式数据,不然没法做或者很难做。
1.针对楼主的问题,楼上有哥们说不推荐使用多线程,这个我持否定态度,这个主要是考虑性能问题,多线程不可避免,其次还要配合批量插入使用,
就是每1000条或者几千条入库一次,不要一条一条入库,这样就可以保证性能问题。
2.针对以上方案,我建议楼主使用LineNumberReader和RandomAccessFile这俩类,把文件分割成N份,然后起N个线程去处理。
3.或者使用生产者消费者模式来解决,还是使用2中的方案,但是还要另外再加几个消费者线程,负责解析入库,生产者只负责读数据。希望对楼主能有所帮助。

我用的Navicat工具,右键表选择导入向导可以用txt导入

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问