读大文件到mysql

起初使用java读文件处理格式后存入数据库,运行后发现,效率太低太低,4G文本,4000多万行,估计需要30天左右才能完成处理。

数据格式:

每行->  XXXX ||| XXXXXXX ||| XXXXXXXXXXXXXXXXX

数据是严格结构化的,因此查询到一种直接从文件导入mysql的方法:

Load Data infile

参考文章:http://hunan.iteye.com/blog/752606

使用的指令如下:

load data infile '/home/lenovo/文档/NLPCC2015/auxiliary-data/NLPCC-2015.Auxiliary.KB.Chinese'
ignore into table detail_all character set utf8 fields terminated by ' ||| '
lines terminated by '\n' (`subject`,`predicate`,`value`); 

根据[ ||| ]分割一行数据,分割成三段,然后每行根据\n识别,三段数据分别存入三个字段。

成功导入47943428 rows !

导入后发现每行结尾还有\r存在,下面消除\r符号

update detail_all set value = trim(TRAILING ‘\r‘ FROM `value`);

用trim消除开头和最后的符号。参考:http://nameyjj.blog.51cto.com/788669/621932

运行时报错:

Error Code: 2013. Lost connection to MySQL server during query	600.746 sec

查到解决方案:http://www.quora.com/How-can-I-solve-the-Error-Code-2013-Lost-connection-to-MySQL-server-during-query-600-135-sec-error-message

即把超时的时间调大即可。

随后运行报错:

Error Code: 1205. Lock wait timeout exceeded; try restarting transaction

查到解决方案:http://blog.csdn.net/mchdba/article/details/38313881

我这里是回滚进程没有结束,等待其结束即可。

时间: 2024-11-24 07:43:55

读大文件到mysql的相关文章

ATS读大文件(命中)

大文件存储结构和小文件完全不同,小文件占一个fragment就够了,小文件占若干个fragment.小文件第一个是doc只存一些信息数据,包括http头,资源的content存在于若干个fragment中,默认每个fragment展1048576字节,在proxy.config.cache.target_fragment_size中可以改.一个fragment中有72个字节是doc,剩下的是资源的content.ats会先读第一个fragment,然后以循环的方式读取若干个fragment,直到

图像,大文件的mysql导入与读取存放到本地

package conn; import java.io.*; import java.sql.Blob; import java.sql.Clob; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Stateme

POI 读大文件日志

POI的三个目录 usermodel 包含很多类,方便用户使用,但是占用内存大 eventusermodel 使用xml的SAX事件解析,XSSFReader创建时必须使用OPCPackage,pkg这个对象是通过OPCPackage.open(File或者inputStream)创建出来的, 这个过程是将excel文件解析成了xml文档(?),对于一个50M的excel占用内存达到500M左右. 后面解析这个xml时才用到SAX事件, 原文地址:https://www.cnblogs.com/

java读写文件,读超大文件

一直在处理爬虫,经常能遇到读写文件的操作,很多时候都是读写超大文件,记录如下: 一.读文件 import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException;

Java NIO内存映射---上G大文件处理

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲了java中内存映射的原理及过程,与传统IO进行了对比,最后,用实例说明了结果. 一.java中的内存映射IO和内存映射文件是什么? 内存映射文件非常特别,它允许Java程序直接从内存中读取文件内容,通过将整个或部分文件映射到内存,由操作系统来处理加载请求和写入文件,应用只需要和内存打交道,这使得IO操作非常快.加载内存映射文件所使用的内存在Java堆区之外.Java编程语言

Java NIO内存映射---上G大文件处理(转)

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲了java中内存映射的原理及过程,与传统IO进行了对比,最后,用实例说明了结果. 一.java中的内存映射IO和内存映射文件是什么? 内存映射文件非常特别,它允许Java程序直接从内存中读取文件内容,通过将整个或部分文件映射到内存,由操作系统来处理加载请求和写入文件,应用只需要和内存打交道,这使得IO操作非常快.加载内存映射文件所使用的内存在Java堆区之外.Java编程语言

FileOutputStream字节输出流和FileInputStream输入流(切记:out是输出到本地中,in是输入到程序中)这里介绍大文件和小文件的读取方式

//FileOutputStream public class FileOutputStreamDemo { /**字节流:适用于任何文件,以字节为单位,进行读写操作  *字节流操作步骤:  *1.创建文件对象  *2.创建字节流  *3.读写操作  *4.关闭流  */ //字节流(写操作) public static void main(String[] args) { String messageString = "hello world";  byte[] bytes = me

jdbc mysql crud dao模型 sql注入漏洞 jdbc 操作大文件

day17总结 今日内容 l JDBC 1.1 上次课内容总结 SQL语句: 1.外键约束:foreign key * 维护多个表关系! * 用来保证数据完整性! 2.三种关系: * 一对多: * 一个客户可以对应多个订单,一个订单只属于一个客户! * 建表原则: * 在多的一方创建一个字段,作为外键指向一的一方的主键!!! * 多对多: * 一个学生可以选择多个课程,一个课程也可以被多个学生选择! * 建表原则: * 创建第三张表,第三张表中放入两个字段,作为外键分别指向多对多双方的主键! *

mysql插入blob大文件

1,E:\MySQL\MySQL Server 5.7\my.ini    max_allowed_packet=40M 2,MySQL的四种BLOB类型 类型 大小(单位:字节)  TinyBlob 最大 255  Blob 最大 65K  MediumBlob 最大 16M  LongBlob 最大 4G mysql插入blob大文件,布布扣,bubuko.com