- 浏览: 659466 次
- 性别:
- 来自: 常州
文章分类
- 全部博客 (345)
- java (63)
- Struts2 (11)
- Spring2.5 + (17)
- Hibernate (25)
- Struts2 Spring hibernate (5)
- log4j (3)
- apache tomcat (12)
- oracle (22)
- oracle_存储过程 (4)
- mysql (18)
- jquery (11)
- prototype (5)
- js (19)
- quartz (5)
- 设计模式 (6)
- eclipse/MyEclipse 注意事项 (9)
- eclipse (0)
- css (6)
- 正则表达式 (2)
- linux (18)
- PHP (6)
- 多线程 (20)
- XML (1)
- jstl (3)
- mongoDB (7)
- android (20)
- 反射 (1)
- IOS (46)
- SVN (3)
- C/C++ (4)
- 百度地图 (2)
- IO/SOCKET (3)
- 百度地图JS (1)
- 树莓派/香蕉派 (1)
最新评论
-
anny101:
想转发一下,不知道怎么转发。评论一下吧。方便查看。
fetch = FetchType.EAGER 作用 -
Navee:
果然我这也是是防火墙问题
解决 Linux 安装 httpd局域网无法访问 -
dhyang909:
...
oracle 10g+ 行列转换 -
国产希特勒:
真强,居然有人把公司的面试题挂到javaeye上了
锦江国际的一道面试题(很简单) -
tomfish88:
比如我要拦截不同业务的service类里面的方法 @Poi ...
Spring AOP annotation 拦截表达式 分析
50万数据9秒插完,前提是把mysql的执行SQL大小设大点。jvm的虚拟也大点
package com.ikea.utils; import java.io.BufferedReader; public class InsertMember { public static String encodin = "UTF8"; public static void main(String[] args) { System.out.println(new Date()); Connection conn = null; List<String[]> dataList = linePaser("D://document//wunderman//ikea//database//ikea_sftp//ikea_member_email_final//11.txt"); String sql = getSQL(dataList); // insert into member (cst_id, cst_membershipnum, cst_name, cst_firstname, cst_email, cnt_code) values (1,1,1,1,1,1),(2,2,2,3) String url = "jdbc:mysql://localhost:3306/test"; String username = "root"; String password = "root"; //加载驱动程序以连接数据库 try { Class.forName("org.gjt.mm.mysql.Driver"); conn = DriverManager.getConnection(url, username, password ); PreparedStatement pstmt = conn.prepareStatement(sql); String[] lines; for (int i = 0; i < dataList.size(); i++) { lines = dataList.get(i); if(lines.length == 6) { pstmt.setString(i * 6 + 1, lines[0].equals("NULL") ? null : lines[0] ); pstmt.setString(i * 6 + 2, lines[1].equals("NULL") ? null : lines[1] ); pstmt.setString(i * 6 + 3, lines[2].equals("NULL") ? null : lines[2] ); pstmt.setString(i * 6 + 4, lines[3].equals("NULL") ? null : lines[3] ); pstmt.setString(i * 6 + 5, lines[4].equals("NULL") ? null : lines[4] ); pstmt.setString(i * 6 + 6, lines[5].equals("NULL") ? null : lines[5] ); } } int result = pstmt.executeUpdate(); System.out.println(result); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } System.out.println(new Date()); } public static String getSQL(List<String[]> dataList) { StringBuilder sql = new StringBuilder() .append(" INSERT INTO _member (cst_id, cst_membershipnum, cst_name, cst_firstname, cst_email, cnt_code) VALUES "); String[] lines = null; for (int i = 0; i < dataList.size(); i++) { lines = dataList.get(i); if(lines.length == 6) { sql.append(" ( "); for (int j = 0; j < lines.length; j++) { sql.append(" ? "); if(j < lines.length - 1) { sql.append(" , "); } if(j == lines.length - 1) { sql.append(" ) "); } } if(i < dataList.size() - 1) { sql.append(" , "); } } else { System.out.println("行数:"+ i + "data: " + lines[0]); } }; return sql.toString(); } private static String[] splitLine(String src) throws Exception { if (src == null || src.equals("")) return new String[0]; StringBuffer st = new StringBuffer(); Vector<String> result = new Vector<String>(); boolean beginWithQuote = false; for (int i = 0; i < src.length(); i++) { char ch = src.charAt(i); if (ch == '\"') { if (beginWithQuote) { i++; if (i >= src.length()) { result.addElement(st.toString()); st = new StringBuffer(); beginWithQuote = false; } else { ch = src.charAt(i); if (ch == '\"') { st.append(ch); } else if (ch == '|') { result.addElement(st.toString()); st = new StringBuffer(); beginWithQuote = false; } else { throw new Exception( "Single double-quote char mustn't exist in filed " + (result.size() + 1) + " while it is begined with quote\nchar at:" + i); } } } else if (st.length() == 0) { beginWithQuote = true; } else { throw new Exception( "Quote cannot exist in a filed which doesn't begin with quote!\nfield:" + (result.size() + 1)); } } else if (ch == '|') { if (beginWithQuote) { st.append(ch); } else { result.addElement(st.toString()); st = new StringBuffer(); beginWithQuote = false; } } else { st.append(ch); } } if (st.length() != 0) { if (beginWithQuote) { throw new Exception( "last field is begin with but not end with double quote"); } else { result.addElement(st.toString()); } } String rs[] = new String[result.size()]; for (int i = 0; i < rs.length; i++) { rs[i] = (String) result.elementAt(i); } return rs; } public static ArrayList<String[]> linePaser(String fileName) { // BufferedReader br; ArrayList<String[]> dataList = new ArrayList<String[]>(); try { //FileInputStream fis = new FileInputStream(fileName); //InputStreamReader isr = new InputStreamReader(fis, encodin); //BufferedReader br = new BufferedReader(isr); BufferedReader br = null; br = new BufferedReader(new FileReader(fileName)); String rec; String[] ret; int count = 0; while ((rec = br.readLine()) != null) { count ++ ; if(rec.endsWith("cnt_code") || rec.startsWith("(")) { System.out.println("过滤提示信息" + rec); } else { ret = splitLine(rec); if(ret.length != 6) { if(ret.length == 0) { System.out.println("数据过滤不是6个字段的数据。空行"); } else { System.out.println("数据过滤不是6个字段的数据。第" + count + "行 " + rec); } } else { dataList.add(ret); } } } br.close(); //isr.close(); //fis.close(); } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } return dataList; } }
发表评论
-
fastjson格式化日期 时间
2016-07-19 10:23 751@JSONField (format="HH ... -
将博客搬至CSDN
2014-11-24 10:03 18将博客搬至CSDN -
centos 安装 java7,tomcat7,mysql5.6,mongodb
2014-10-24 11:30 917chkconfig --list tomcat7 ... -
mongodb 分组 得到第一条数据
2014-10-06 13:52 2090业务逻辑: 控制器每分钟上报采集数据,现需得到每个控制器 ... -
2进制,10进制,16进制
2014-08-19 16:39 1017// 1个字节8位,最大可表示255 // 2进 ... -
Buffer的基本用法
2014-08-14 11:47 7331、对buffe.put(**)后,都要buffer.fl ... -
mongodb删除已处理过的数据,即非新增数据
2014-08-12 17:36 549/** * 删除已处理过的数据( ... -
编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC
2014-08-07 13:10 2325package test1; import j ... -
java 多线程 笔试题
2014-08-07 12:30 12591、4线程,2个对i加,2个对i减 2、实现孙线程 ... -
基于ArrayBlockingQueue的生产者和消费者
2014-08-06 23:02 742学习写的测试,可能有BUG。 有了ArrayBlocki ... -
每隔一秒打印一次日志,共16秒打印完,加4个线程修改程序,使之4秒打印完
2014-08-06 17:20 1166原来的程序: package test1; publ ... -
通过semaphore信号灯,开启多个线程,但只并发3个线程
2014-08-04 22:07 920package com.mhm.test1; ... -
用锁实现缓存机制
2014-08-01 14:11 824package test1; import java. ... -
用Lock和Condition,实现主线程执行5次,子线程再执行10次,孙线程执行15次,如此反复5次
2014-08-01 13:50 858package test1; import java. ... -
用Lock和Condition,实现主线程执行5次,子线程再执行10次,孙线程执行15次,如此反复5次
2014-08-01 13:49 1package test1; import ja ... -
通过代码,解释ExecutorService基本用法
2014-07-29 17:49 596package test1; import ja ... -
4线程,2个对i加,2个对i减
2014-07-29 16:23 857package test1; /** * 设计 ... -
简单多线程卖票代码
2014-07-29 15:45 852public class Thread2 { pu ... -
通过代码,了解ThreadLocal
2014-07-29 14:06 539在看此代码时,先看http://www.iteye.com ... -
子线程先执行10次,主线程执行5次,子线程再执行10次,主线程再执行5次,如此反复3次
2014-07-28 22:21 790package com.mhm.test1; / ...
相关推荐
### BCP插入大容量数据详解 #### 背景与问题描述 在处理大量数据时,数据库性能常常成为瓶颈之一。本案例中的场景是,在一个包含6千万条记录的表中,由于数据量巨大,直接在某字段上创建索引的操作无法顺利完成。...
如果需要批量插入数据,`SqlBulkCopy`类提供了一个便捷的方式。 总结来说,处理大容量数据和多线程应用是C#开发中的核心技能。通过合理利用多线程、优化SQL查询和采用高效的数据库操作方法,我们可以构建出高性能、...
之后,用户可选择执行插入或删除操作,根据提示输入位置和(插入时的)新数据,系统将相应地调用`listinsert`或`listdelete`函数。 ### 总结 通过对线性表构建、插入与删除操作的深入解析,我们了解到这些基本操作...
本文将深入探讨在`vector`和`list`中插入数据的方法、性能差异以及适用场景。 **一、std::vector** `std::vector`是一个动态数组,提供了随机访问的能力。它的插入操作主要有以下几种: 1. **在末尾插入元素**: `...
SqlBulkCopy类提供了类似数据库大容量加载的功能,它能显著提高数据插入的速度,尤其适用于处理百万级乃至千万级的数据量。 首先,SqlBulkCopy是System.Data.SqlClient命名空间下的一个类,它的主要功能就是实现...
根据给定的文件信息,我们可以总结出以下关于“线性表实现插入删除数据”的关键知识点,这些知识主要涉及C语言中的线性表操作,包括初始化、添加元素、合并线性表、插入元素、删除元素以及查找元素等核心功能。...
在IT领域,C语言是一种广泛使用的...理解并熟练掌握线性表的创建、插入和删除操作是学习C语言数据结构的重要步骤,这将有助于进一步学习更复杂的算法和数据结构。通过实践,你可以更好地理解这些概念,并提升编程能力。
各个基本算法实现代码:选择排序_插入排序_冒泡排序_归并排序_堆排序_基数排序_大容量文件数据排序__sort
即使使用可变长度的列定义键,只要不插入超过 900 字节的数据,其实际大小可以超过此限制。 - **对象个数限制**:数据库对象包括所有表、视图、存储过程、扩展存储过程、触发器、规则、默认值及约束等。一个数据库中...
了解`vector`的最大容量可以帮助我们设计更高效、更健壮的程序,尤其是在处理大数据集或内存受限的环境中。同时,合理地预测和控制`vector`的容量可以减少不必要的内存拷贝和提高性能。 总之,`vector`的最大容量是...
标题中的“大容量编辑器”指的是专为处理大型文件而设计的文本编辑工具。这类编辑器通常具有高效能和优化的内存管理机制,能够在不占用过多系统资源的情况下,快速加载和编辑大到几GB甚至更大的文件。对于程序员、...
- 当数据量变化大,且插入和删除操作频繁时,动态数组或链表更为合适。 理解并掌握顺序表插入的概念和实现方法对于学习数据结构和算法至关重要,因为它们是许多高级数据结构和算法的基础,如栈、队列、哈希表等。...
B树和B+树的设计保证了高效的查找、插入和删除,尤其适合大容量数据的存储系统。它们能够减少磁盘I/O操作,因为一次磁盘读取可以处理大量的数据,而且由于其高度较低,查找效率高。B+树的特性使其更适合数据库索引,...
"2路插入排序"是一种对线性数据结构(如数组)进行排序的算法,它将原始数据分为已排序和未排序两部分。在这个过程中,一个辅助的循环数组被用来存储未排序的部分,而主数组则逐渐形成有序序列。具体操作包括比较、...
本文档旨在帮助读者理解并掌握顺序表的插入和删除操作的具体实现方法,并且能够根据实际需求灵活运用这些技术。 #### 二、基础知识 在深入探讨顺序表的插入和删除之前,我们需要了解一些基础知识: 1. **顺序表...
在实现插入操作时,需要先进行入口判断,确保当前线性表的长度未达到最大容量并且插入位置合法。如果满足条件,便可以执行元素的后移操作,即将所有位于插入位置之后的元素依次向后移动一位,然后在指定位置插入...
嵌入式大容量数据存储解决方案是现代科技发展中的一个重要领域,尤其在32位嵌入式微处理器广泛应用的背景下,这种需求更为显著。传统的数据存储方法,如U盘、硬盘和SD/MMC卡,虽然提供了大容量存储的能力,但在体积...
顺序表数据结构算法实现 顺序表是一种常见的线性表数据结构,通过顺序存储的方式来存储数据。下面是关于顺序表的知识点总结: 1. 顺序表的定义:顺序表是一种线性表数据结构,它是通过顺序存储的方式来存储数据的...