导入csv文件到数据库
csv:逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。
这是使用记事本打开大一个csv文件:
另外,csv也可以像excel那样作为一个表格的形式打开:
当然,首要先要一个前提,你要添加到数据库的数据,必须和数据库中标的字段互相对应:
注意:这里我故意将表格中某些字段没有输入数据,尤其是表格的第五行,主键没有,所以,这个是不能插入到数据中的,我们将在后台进行判断。
下面开始代码:(数据库连接部分省略)
public static void main(String[] args) throws IOException { // 获取要录入的文件 BufferedReader br = new BufferedReader(new FileReader(new File("C:/Users/Nemo/Desktop/testCSV.csv"))); // 读取直到最后一行 String line = ""; boolean isFirstRow = true; // 判断是不是表头 int collumNum = 0; while ((line = br.readLine()) != null) { if (isFirstRow) { // 如果是表头,根据表头判断这个表一共有几个字段,并跳过表头的插入 isFirstRow = false; collumNum = line.split(",").length; continue; } String[] fields = new String[collumNum]; fields = line.split(","); if (fields.length == 7) { // 判断最后一个字段有没有内容 User user = new User(); // 封装要添加到数据库的对象 if (fields[0] == null || fields[0].equals("")) { System.out.println("**************此行没有主键,跳过**************"); continue; } else user.setId(Integer.parseInt(fields[0])); if (fields[1] == null || fields[1].equals("")) user.setName(null); else user.setName(fields[1]); if (fields[2] == null || fields[2].equals("")) user.setPassword(null); else user.setPassword(fields[2]); if (fields[3] == null || fields[3].equals("")) user.setNickName(null); else user.setNickName(fields[3]); if (fields[4] == null || fields[4].equals("")) ; else user.setAge(Integer.parseInt(fields[4])); if (fields[5] == null || fields[5].equals("")) user.setGender(null); else user.setGender(fields[5]); if (fields[6] == null || fields[6].equals("")) user.setAddress(null); else user.setAddress(fields[6]); addToDb(user); // 添加到数据库 } else { // 最后一个字段没有输入内容 User user = new User(); // 封装要添加到数据库的对象 if (fields[0] == null || fields[0].equals("")) { System.out.println("**************此行没有主键,跳过**************"); continue; } else user.setId(Integer.parseInt(fields[0])); if (fields[1] == null || fields[1].equals("")) user.setName(null); else user.setName(fields[1]); if (fields[2] == null || fields[2].equals("")) user.setPassword(null); else user.setPassword(fields[2]); if (fields[3] == null || fields[3].equals("")) user.setNickName(null); else user.setNickName(fields[3]); if (fields[4] == null || fields[4].equals("")) ; else user.setAge(Integer.parseInt(fields[4])); if (fields[5] == null || fields[5].equals("")) user.setGender(null); else user.setGender(fields[5]); addToDb(user); // 添加到数据库 } } br.close(); System.out.println("**************录入完毕**************"); }
/** * 向数据库中添加记录 * * @param user */ private static void addToDb(User user) { // 判断数据库当中是否存在该条记录 if (isRepeat(user)) return; Connection conn = null; PreparedStatement pstmt = null; try { conn = DbUtil.getConnection(); String sql = "insert into t_user(dbid, name, pwd, nickName, age, gender, addres) values(?, ?, ?, ?, ?, ?, ?)"; pstmt = conn.prepareStatement(sql); pstmt.setInt(1, user.getId()); pstmt.setString(2, user.getName()); pstmt.setString(3, user.getPassword()); pstmt.setString(4, user.getNickName()); pstmt.setInt(5, user.getAge()); pstmt.setString(6, user.getGender()); pstmt.setString(7, user.getAddress()); pstmt.execute(); } catch (Exception e) { e.printStackTrace(); } }
/** * 判断数据库中是否有该条记录 * * @param user * @return */ private static boolean isRepeat(User user) { ResultSet rs = null; Connection conn = null; PreparedStatement pstmt = null; try { conn = DbUtil.getConnection(); String sql = "select * from t_user"; pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery(); while (rs.next()) if (rs.getString("dbid").equals(user.getId())) return true; } catch (Exception e) { e.printStackTrace(); } return false; }
导入csv文件到数据库的更多相关文章
- Oracle数据库导入csv文件(sqlldr命令行)
1.说明 Oracle数据库导入csv文件, 当csv文件较小时, 可以使用数据库管理工具, 比如DBevaer导入到数据库, 当csv文件很大时, 可以使用Oracle提供的sqlldr命令行工具, ...
- 将文件夹下的所有csv文件存入数据库
# 股票的多因子分层回测代码实现 import os import pymysql # import datetime, time # from config import * database_ta ...
- ACCESS导入CSV文件出现乱码解决办法
在ACCESS或Excel中导入CSV文件时常常出现乱码,这是因为简体中文版的windows操作系统及其应用软件默认都是ANSI/GBK编码,而导入的文件使用的编码与操作系统默认的编码不相符.出现这种 ...
- C# 将List中的数据导入csv文件中
//http://www.cnblogs.com/mingmingruyuedlut/archive/2013/01/20/2849906.html C# 将List中的数据导入csv文件中 将数 ...
- 利用kettle组件导入excel文件到数据库
利用kettle组件导入excel文件到数据库 1. 实现目标 把excel文件内容导入到目标表中:然后用java调用kettle的转换.excel文件的内容仅仅有两列,示比例如以下: wat ...
- oracle导入csv文件
oracle导入csv文件: 1.建好对应的表和字段: 2.新建test.ctl文件,用记事本编辑写入: load data infile 'e:\TB_KC_SERV.csv' --修改对应的文件路 ...
- python导入csv文件时,出现SyntaxError
背景 np.loadtxt()用于从文本加载数据. 文本文件中的每一行必须含有相同的数据. *** loadtxt(fname, dtype=<class 'float'>, commen ...
- R: 导入 csv 文件,导出到csv文件,;绘图后导出为图片、pdf等
################################################### 问题:导入 csv 文件 如何从csv文件中导入数据,?参数怎么设置?常用参数模板是啥? 解决方 ...
- python导入csv文件出现SyntaxError问题分析
python导入csv文件出现SyntaxError问题分析 先简单描述下碰到的题目,要求是写出2个print的结果 可以看到,a指向了一个列表list对象,在Python中,这样的赋值语句,其实内部 ...
随机推荐
- 聊一聊Python与C++的不同(二)
今天我们聊一下基本数据类型吧, 在学习c++的时候我们要记住几种数据类型,int,float,double,long,char,double,string,bool,每次使用都要明确定义每个数据类型, ...
- 机器学习:Python实现最小均方算法(lms)
lms算法跟Rosenblatt感知器相比,主要区别就是权值修正方法不一样.lms采用的是批量修正算法,Rosenblatt感知器使用的 是单样本修正算法.两种算法都是单层感知器,也只适用于线性可分的 ...
- 在Android中使用am和input命令在实际使用中的注意事项以及小技巧
在Android使用到am和进行一些操作是非常方便的,比如一个重复自动的操作,具体用来实现一些什么是看个人需求了,接下来说对于am和input的使用. 本文适用于已经大概去了解了am和input的朋友 ...
- 【 Android】自定义的AlertDialog中的EditText无法调用输入法问题解决
1.问题描述: 在自定义的AlertDialog 中添加了EditText组件,但运行时怎么点EditText都无法调出软键盘: 2.原因分析: 一开始我以为EditText的focus属性没有设置好 ...
- [个人小工具]清除SVN控制
SVN控制说白了就是在.svn文件夹内把项目文件的信息保存,清除SVN控制其实就是把.svn文件夹删除就可以了.但是如果文件夹太多,总不可能一个个文件夹去删除吧,所以写了个遍历文件夹删除的小工具. R ...
- RabbitMQ配置与安装
最近这几天身体不舒服,脖子痛的厉害,可能是上月太累了好久没写博客了,之前也说了公司的.Net项目部做了,改用Scale来做,原本想着会用java来搞,所以上个月在拼命的学java,这几天一直脖子不舒服 ...
- CGLIB和JDK代理
需要的架包:在spring中提供对CGLIB的支持 一.JDK的动态代理 1.接口IUserDao package cn.itcast.spring3.jdk.proxy; public interf ...
- 【CSS】如何用css做一个爱心
摘要:HTML的标签都比较简单,入门非常的迅速,但是CSS是一个需要我们深度挖掘的东西,里面的很多样式属性掌握几个常用的便可以实现很好看的效果,下面我便教大家如何用CSS做一个爱心. 前期预备知识: ...
- loopj.com android-async-http
loopj.com android-async-http Android异步Http客户端 用于Android的基于回调的Http客户端库 下载版本1.4.9(最新) 或者在github上fork ...
- Apache设置404页面
使用版本:Apache 2.2 1.添加404页面 在所配置网站的根目录添加编辑好的 404.html (页面名字无所谓 比如也可以叫missing.html) 如C:\Program Files\A ...