java实现批量导入.csv文件到mysql数据库

这篇博文是在参加CCF时导入.csv文件时自己总结的,虽然NavicatForMysql可以导入.csv文件,可是当我导入的时候不知道是文件太大还是什么原因,总是会出现失败。然后就用java写了一个批量导入数据的类去导入该.csv文件,这里也没有考虑代码的结构,只是为了快速的完成这个工作,做一个总结。

package com.cqu.price_prediction.farm;

import java.io.File;
import java.io.FileNotFoundException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;

public class Read
{
 private static Connection con;

 public static void main(String[] args) throws FileNotFoundException, SQLException
 {

 long startTime = System.currentTimeMillis();
 File file = new File("H:/AgriculturalProduct/data/farming.csv");

 Scanner in = new Scanner(file);

 getConnect();
 System.out.println("数据库连接成功");
 insert_data(in);

 long EndTime = System.currentTimeMillis();
 long time = (EndTime - startTime) / 1000;

 System.out.println("导入数据共用时:" + time);
 }

 private static void insert_data(Scanner in) throws SQLException
 {
 int count = 0;
 String sql = "insert into farming (province,market,type,name,standard,area,color,unit,minprice,avgprice,maxprice,entertime,time)"
  + "values(?,?,?,?,?,?,?,?,?,?,?,?,?)";

 con.setAutoCommit(false);
 PreparedStatement pstmt = con.prepareStatement(sql);
 in.next();
 while (in.hasNext())
 {
  String temp1 = in.nextLine();
  String[] temp = temp1.split(",");

  if (temp.length < 13)
  continue;

  if (temp.length == 13)
  {
  pstmt.setString(1, temp[0]);
  pstmt.setString(2, temp[1]);
  pstmt.setString(3, temp[2]);
  pstmt.setString(4, temp[3]);
  pstmt.setString(5, temp[4]);
  pstmt.setString(6, temp[5]);
  pstmt.setString(7, temp[6]);
  pstmt.setString(8, temp[7]);
  pstmt.setString(9, temp[8]);
  pstmt.setString(10, temp[9]);
  pstmt.setString(11, temp[10]);
  pstmt.setString(12, temp[11]);
  pstmt.setString(13, temp[12]);
  }

  pstmt.addBatch();

  count++;

  if (count == 20000)
  {
  count = execute(pstmt, count);
  }
 }
 pstmt.executeBatch();
 con.commit();

 }

 public static int execute(PreparedStatement pstmt, int count) throws SQLException
 {

 pstmt.executeBatch();
 con.commit();
 return 0;

 }

 private static void getConnect()
 {
 try
 {
  Class.forName("com.mysql.jdbc.Driver");
  con = DriverManager.getConnection(
   "jdbc:mysql://localhost:3306/agricultural_price_prediction?useUnicode=true&characterEncoding=utf8&useServerPrepStmts=false&rewriteBatchedStatements=true",
   "root", "123456");
 }
 catch (ClassNotFoundException | SQLException e)
 {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
 }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • java批量导入导出文件的实例分享(兼容xls,xlsx)

    一.介绍 利用java实现文件的导入导出数据库,目前在大部分系统中是比较常见的功能了,今天写个小demo来理解其原理,没接触过的同学也可以看看参考下. 目前我所接触过的导入导出技术主要有POI和iReport,poi主要作为一些数据批量导入数据库,iReport做报表导出.另外还有jxl类似poi的方式,不过貌似很久没跟新了,2007之后的office好像也不支持,这里就不说了. 二.POI使用详解 2.1 什么是Apache POI? Apache POI是Apache软件基金会的开放源码函式

  • java实现批量导入.csv文件到mysql数据库

    这篇博文是在参加CCF时导入.csv文件时自己总结的,虽然NavicatForMysql可以导入.csv文件,可是当我导入的时候不知道是文件太大还是什么原因,总是会出现失败.然后就用java写了一个批量导入数据的类去导入该.csv文件,这里也没有考虑代码的结构,只是为了快速的完成这个工作,做一个总结. package com.cqu.price_prediction.farm; import java.io.File; import java.io.FileNotFoundException;

  • Python之csv文件从MySQL数据库导入导出的方法

    Python从MySQL数据库中导出csv文件处理 csv文件导入MySQL数据库 import pymysql import csv import codecs def get_conn(): conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='root', db='test_csv', charset='utf8') return conn def insert(cur, sql, args): c

  • Java实现批量导入excel表格数据到数据库中的方法

    本文实例讲述了Java实现批量导入excel表格数据到数据库中的方法.分享给大家供大家参考,具体如下: 1.创建导入抽象类 package com.gcloud.common.excel; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.PrintStream; import java.sql.SQLException;

  • php导入excel文件到mysql数据库的方法

    本文实例讲述了php导入excel文件到mysql数据库的方法.分享给大家供大家参考.具体分析如下: php导入excel文件入mysql数据库我们是需一借助一个phpexcel类文件了,有了这个类文件我们就可以快速简单的导入excel到mysql数据库中,这里就来举个例子给大家说明一下具体用法. 导入前我们需要先准备一个数据库,sql语句代码如下: 复制代码 代码如下: /* Navicat MySQL Data Transfer   Source Server         : local

  • php中数据的批量导入(csv文件)

    有时写程序时后台要求把大量数据导入数据库中,比如计算机考试成绩的查询.电话簿的数据等一般都是存放在excel中的,这时我们可把数据导出成csv文件,然后通过以下程序即可在后台批量导入数据到数据库中. 下面只是主要程序部分: <?php /***************************************************作者:冲星/arcow**************************njj@nuc.edu.cn*****************************

  • java实现批量导入Excel表格数据到数据库

    本文是基于Apache poi类实现的批量导入读取Excel文件,所以要先引入Apache poi的依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.1</version> </dependency> <dependency> <groupId>org.a

  • Navicat for MySql可视化导入CSV文件

    本文为大家分享了Navicat for MySql可视化导入CSV文件的具体代码,供大家参考,具体内容如下 版本号:Navicate 12 1.创建一个数据库,右键单击表,导入向导import Wizard. 2.选择导入的数据文件格式,next-> 3.选择要导入的.csv文件,注意编码格式与文件编码格式一样否则会出现乱码,然后进行下一步 4.选择需要的分隔符,我用的Linux,所以record delimiter这个记录分隔符为LF,来表示下一行 5.根据你的csv文件内容来调整,field

  • mysql实现查询结果导出csv文件及导入csv文件到数据库操作

    本文实例讲述了mysql实现查询结果导出csv文件及导入csv文件到数据库操作.分享给大家供大家参考,具体如下: mysql 查询结果导出csv文件: select logtime, operatingsystem, imei from GameCenterLogs where operatingsystem >= 1 and operatingsystem <=3 group by operatingsystem,imei into outfile '/tmp_logs/tmp.csv' f

  • Python批量将csv文件转化成xml文件的实例

    一.前言 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本).纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据.CSV文件由任意数目的记录组成,记录间以某种换行符分隔:每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符.通常,所有记录都有完全相同的字段序列,通常都是纯文本文件. 可扩展标记语言,标准通用标记语言的子集,简称XML.是一种用

  • Hive导入csv文件示例

    目录 正文 首先创建表 导入数据及查询 其他注意事项 总结 正文 现有文件为csv格式,需要导入hive中,设csv内容如下 1001,zs,23 1002,lis,24 首先创建表 create table if not exists csv2( uid int, uname string, age int ) row format serde 'org.apache.hadoop.hive.serde2.OpenCSVSerde' stored as textfile ; 导入数据及查询 l

随机推荐