大家可能会遇到这样的问题,在做一个项目时需要操作数据库,需要有大量的数据需要导入到数据库中,这部分数据存到了txt文档中(可以把Word文档中的数据弄到txt文档),总不能每一条数据都复制黏贴到数据库,10k条,100k条甚至100000k条记录呢?接下来,小李帮您使用Java完成28秒导入2万条记录。

  • 首先需要从文档中读取数据,这就用到了Java对文档的操作;
  • 其次截取字符串,把取到的数据按照一定的规则截成自己需要的格式;
  • 最后,将每一条记录插入到数据库中。

 上代码:

public class Text {
2
3 private static String str;
4
5 public static void main(String[] args) throws Exception {
6
7 final String url = "jdbc:mysql://localhost:3306/edi";
8 final String name = "com.mysql.jdbc.Driver";
9 final String user = "root";
10 final String password = "";
11 Connection conn = null;
12 Class.forName(name);// 指定连接类型
13 conn = DriverManager.getConnection(url, user, password);// 获取连接
14 if (conn != null) {
15 System.out.println("获取连接成功");
16 insert(conn);
17 } else {
18 System.out.println("获取连接失败");
19 }
20
21 // FileReader file=new FileReader("D:\\workspace\\MyLearn\\count.txt");
22
23 }
24
25 public static void insert(Connection conn) {
26 // 开始时间
27 Long begin = new Date().getTime();
28 // sql前缀
29 String prefix = "INSERT INTO t_dic VALUES ";
30 try {
31 InputStreamReader inputReader = null;
32 BufferedReader bufferReader = null;
33 InputStream inputStream = new FileInputStream("G:\\贺哥\\dict1.txt");
34 inputReader = new InputStreamReader(inputStream);
35 bufferReader = new BufferedReader(inputReader);
36
37 // 读取一行
38 String line = null;
39 StringBuffer strBuffer = new StringBuffer();
40
41 // 保存sql后缀
42 StringBuffer suffix = new StringBuffer();
43 // 设置事务为非自动提交
44 conn.setAutoCommit(false);
45 // 比起st,pst会更好些
46 PreparedStatement pst = (PreparedStatement) conn.prepareStatement("");// 准备执行语句
47
48 while ((line = bufferReader.readLine()) != null) {
49 suffix = new StringBuffer();
50 strBuffer.append(str);
51 String a[] = line.split(" "); // 按照相应规则截取字符串
52 String s = "";
53 for (int i = 1; i < a.length; i++) {
54 s += a[i] + " ";
55 }
56 String ss = s.trim(); // 去掉字符串开头和结尾的空格
57 System.out.println(a[0]);
58 System.out.println(ss);
59
60 suffix = new StringBuffer();
61
63 // 构建SQL后缀
64 suffix.append("('" + a[0] + "','" + ss + "'),");
65 // }
66 // 构建完整SQL
67 String sql = prefix + suffix.substring(0, suffix.length() - 1);
68 // 添加执行SQL
69 pst.addBatch(sql);
70 // 执行操作
71 pst.executeBatch();
72 // 提交事务
73 conn.commit();
78
79 }
80 pst.close();
81 conn.close();
82
83 } catch (SQLException e) {
84 e.printStackTrace();
85 } catch (IOException e) {
86 // TODO Auto-generated catch block
87 e.printStackTrace();
88 }
89 // 结束时间
90 Long end = new Date().getTime();
91 // 耗时
92 System.out.println("数据插入花费时间 : " + (end - begin) / 1000 + " s");
93 System.out.println("插入完成");
94 }
95 }

自己尝试了上述代码,总共耗时28秒,供19885条记录。没有错误。

欢迎各位大神批评指正,相互提高!

版权所有,允许转载,转载请注明出处,侵权必究!

Java--向数据库添加txt文件中的批量数据的更多相关文章

  1. 代码实现将键盘录入的数据拷贝到当前项目下的text.txt文件中,键盘录入数据当遇到quit时就退出

    package com.looaderman.test; import java.io.FileNotFoundException; import java.io.FileOutputStream; ...

  2. js读取本地txt文件中的json数据

    list.txt内容 [ {"optionKey":"1", "optionValue":"Canon in D"}, ...

  3. java将数据写入到txt文件中(txt有固定的格式)

    java将数据写入到txt文件中,这个应该对于学过java I/O的人来说是很简单的事情了,但是如果要将数据以固定的格式写入到txt文件中,就需要一定的技巧了. 这里举个简单的例子,以供参考: 比如我 ...

  4. SQL C# nvarchar类型转换为int类型 多表查询的问题,查询结果到新表,TXT数据读取到控件和数据库,生成在控件中的数据如何存到TXT文件中

    在数据库时候我设计了学生的分数为nvarchar(50),是为了在从TXT文件中读取数据插入到数据库表时候方便,但是在后期由于涉及到统计问题,比如求平均值等,需要int类型才可以,方法是:Conver ...

  5. java 写一个"HelloJavaWorld你好世界"输出到操作系统文件Hello.txt文件中

    package com.beiwo.homework; import java.io.File; import java.io.FileOutputStream; import java.io.IOE ...

  6. Java中读取txt文件中中文字符时,出现乱码的解决办法

    这是我写的一个Java课程作业时,遇到的问题. 问题描述: 我要实现的就是将txt文件中的内容按一定格式读取出来后,存放在相应的数组. 我刚开始运行时发现,英文可以实现,但是中文字符就是各种乱码. 最 ...

  7. Java导出List集合到txt文件中——(四)

    有时候,需要将数据以一定格式导出到txt文件中.利用Java的IO可以轻松的导出数据到txt中. package Action.txt; import java.io.BufferedWriter; ...

  8. java算法面试题:编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。

    package com.swift; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File ...

  9. 生成大量插入语句,并将语句写入txt文件中

    import java.io.*; /** * Created by czz on 2019/9/23. */ public class TTest { /** * 生成大量插入语句,并将语句写入tx ...

随机推荐

  1. 技术分享,学术报告presentation 常用的承接句

    前言 现在即使是搞技术,做科研的,也需要在不同的场合,用ppt来做分享,做汇报,做总结. 如果国际会议,研讨会,或者在外企,国外工作,英文的presentation就更加必不可少.英语的提升需要大家从 ...

  2. 购买的wemall 6.0商城系统源码分享

    使用方法 1.解压目录 2.cd wemall6 && npm i 3.配置config下的config.json 4.npm start 摒弃以往的开发框架thinkphp,使用no ...

  3. 3359: [Usaco2004 Jan]矩形

    3359: [Usaco2004 Jan]矩形 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 8  Solved: 5[Submit][Status] ...

  4. node删除当前文件底下全部文件的正确姿势

    今天在项目上犯了一个很愚蠢的错误 执行如下,结果删除掉了项目根目录底下的所有配置文件,导致本地虚拟机挂掉,这次多一个/的给我教训真是莫大的...哎 正确的姿势为:

  5. Archlinux 的U盘自动装载(二)升级到 udisks2

    在安装 mysql-gui-tools 过程中,发现需要用到 udisks2.udisks和udisks2可以互相替换也可以共用.最后决定换用 udisks2 安装 先卸载原来的软件,如果有的话. p ...

  6. .Net编译运行原理

    .Net Framework: 它是框架库和运行时的集合 ( FCL, Framework Class Library ) ( CLR, Common Language Runtime ) 不严格说它 ...

  7. Python的.py文件打包成exe可执行文件

    前几天做了几个简单的爬虫python程序,于是就想做个窗口看看效果. 首先是,窗口的话,以前没怎么接触过,就先考虑用Qt制作简单的ui.这里用前面sinanews的爬虫脚本为例,制作一个获取当天sin ...

  8. c++学习笔记之封装篇(上)

    title: c++学习笔记之封装篇(上) date: 2017-03-12 18:59:01 tags: [c++,c,封装,类] categories: [学习,程序员,c/c++] --- 一. ...

  9. Unity3D动态读取外部MP3文件给AudioSource

    在PC端VR游戏开发中,需要动态加载本地的MP3文件,但是Unity3D不知道出于什么原因,到5.4.0也不支持MP3文件的外部加载(目前只支持wav和ogg). 因此要想通过www来加载mp3文件就 ...

  10. 【转】轻应用、Web App、Native App三者分别是什么?

      一.什么是Native app Native App是一种基于智能手机本地操作系统如IOS.Android.WP并使用原生程式编写运行的第三方应用程序,也叫地app.NativeApp因为位于平台 ...