首先创建数据库,这里以oracle为例子,好像mysql差不多也是这样的

CREATE TABLE USSER2(ID NUMBER(10,0) NOT NULL ENABLE,NAME2 VARCHAR2(20 CHAR) NOT NULL ENABLE,PASSWORD VARCHAR2(10 CHAR) NOT NULL ENABLE,PRIMARY KEY (ID)
)

然后使用原生jdbc插入数据

package com.example.demo.jdbc;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;public class Demo {public static void main(String[] args) throws ClassNotFoundException, SQLException {final String url = "jdbc:oracle:thin:@localhost:1521:orcl";final String driverClassName = "oracle.jdbc.driver.OracleDriver";final String user = "ENTSUS_DC";final String password = "ideal";Class.forName(driverClassName);Connection conn = null;conn = DriverManager.getConnection(url, user, password);if (conn != null ) {System.out.println( "获取连接成功" );// 获取连接成功,调用插入方法insert(conn);} else {System.out.println( "获取连接失败" );}}/*** 实际执行插入数据的方法* @param conn*/public static void insert(Connection conn) {try {// 设置事务的提交方式为手动提交conn.setAutoCommit(false);//获取当前的时间,看下总共用了多久时间添加完千万数据Date date = new Date();SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd :hh:mm:ss");System.out.println(dateFormat.format(date));String sql = "INSERT INTO USSER2 ("+ "ID,"+"NAME2,"+ "PASSWORD"+")"+"VALUES(?, ?, ?)";PreparedStatement pstm = conn.prepareStatement(sql);// 向数据库表table_name中批量插入1千万条数据for (int i = 1; i <= 10000000; i++) {pstm.setInt(1, i);  // 为第一个字段赋值(即:替换第一个问号的值)pstm.setString(2, "i");  // 为第二个字段赋值(即:替换第二个问号的值)pstm.setString(3, "男");  // 为第三个字段赋值(即:替换第三个问号的值)pstm.addBatch();   // 添加// 设置每5000条sql语句提交一次事务(说明,5000这个值不是固定的,根据实际情况来设置,值不同,插入的效率也不同,需经过测试才能获取最合适的值)if (i % 5000 == 0) {pstm.executeBatch();   // 执行pstm.clearBatch();     // 清空conn.commit();         // 手动提交事务}}pstm.executeBatch();   // 执行pstm.clearBatch();     // 清空conn.commit();         // 手动提交事务// 调用释放资源的方法close(pstm, conn);} catch (SQLException e) {System.out.println("bbbbb");e.printStackTrace();}}/*** 释放资源的方法* @param pstm* @param conn*/public static void close(PreparedStatement pstm, Connection conn) {try {if (pstm != null) {pstm.close();}if (conn != null) {conn.close();}//获取添加完数据,结束后的时间Date date = new Date();SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd :hh:mm:ss");System.out.println(dateFormat.format(date));System.out.println("连接关闭,程序结束!");} catch (SQLException e) {e.printStackTrace();System.out.println("连接关闭失败");}}}

这样已经成功插入了,而且插入速度还是很快的,刷新数据库就行,速度:原生jdbc>jdbctemplate>存储过程>mybatis

注意事项:

ora-00904:标识符无效

1、表名写错了,仔细检查一下表。

2、字段名写错了,仔细检查一下表。

3、表中无该字段,仔细检查一下表。

4、字段包含了Oracle的关键字,把报错的字段用双引号括起来试试

5、或者你是用Navicat 来创建表的,默认是加了双引号,你可以直接复制我的,然后参照来改就行了,我已经去掉了双引号

如何快速向oracle插入大量数据,以及注意事项相关推荐

  1. oracle 数据有引号,oracle插入字符串数据时字符串中有'单引号问题

    使用insert into(field1,field2...) values('val1','val2'...)时,若值中有单引号时会报错. 处理方法:判断一下val1,val2中是否含有单引号,若含 ...

  2. oracle的日期插入,ORACLE插入日期数据

    ORACLE插入日期数据 oracle数据库插入日期型数据 往Oracle数据库中插入日期型数据(to_date的用法) INSERT  INTO  FLOOR  VALUES  ( to_date ...

  3. Oracle插入大量数据

    原 Oracle 插入大量数据https://blog.csdn.net/tianlesoftware/article/details/4745144版权声明: https://blog.csdn.n ...

  4. oracle中插入日期型数据,ORACLE插入日期数据

    ORACLE插入日期数据 oracle数据库插入日期型数据 往Oracle数据库中插入日期型数据(to_date的用法) INSERT  INTO  FLOOR  VALUES  ( to_date ...

  5. Oracle 插入大量数据时不要写日志

    1. 采用高速的存储设备,提高读写能力,如:EMC 和NetApp, 2. 假如tab1表中的没有数据的话 DROP   TABLE   TAB1; CREATE   TABLE   TAB1   A ...

  6. oracle语句优化pl sql语句,求oracle插入初始数据pl/sql语句优化,该怎么处理(2)

    SQL codeCREATE OR REPLACE PROCEDURE thi_pro AS randomnum NUMBER; randomnum2 NUMBER; randomnum3 NUMBE ...

  7. JAVA Oracle插入大量数据优化

    手动提交方式 public static void batchInsert() throws SQLException {Connection conn = null;PreparedStatemen ...

  8. oracle 插入表数据时,自动生成ID

    今天因为某些原因,需要把达梦数据库(oracle)里面的一张视图的大量数据某些字段插到另外一张表里面,但是又因为这张视图没有ID,插入表ID又不能为null,这时候就可以在插入的时候自动生成ID,记录 ...

  9. oracle插入日期异常,Oracle插入日期数据常见的2个问题和解决方法

    1.无效的月份问题 最近在往数据库中插入时间时,Oracle报"无效的月份问题",具体SQL如下:INSERT INTO TS_COUNT ( ID,CNAME, STARTTIM ...

最新文章

  1. Go 分布式学习利器(4)-- 条件和循环
  2. ALV 动态显示列Demo
  3. vs五子棋c语言代码,五子棋代码C语言版.doc
  4. linux 如何创建内核进程,Linux内核的进程创建和执行.pdf
  5. aspx网页背景图片设置代码_python requests,BeautifulSoup批量下载360图片
  6. C++之虚函数是如何实现的
  7. 1152Google Recruitment
  8. 闲来无事,画个佩奇可好?
  9. 在中标麒麟上基于源码安装第二个gcc编译器
  10. 电子元器件选型——二极管
  11. python简单爬虫获取行政边界点坐标
  12. 蓝桥杯校赛第十二届第二期模拟赛 c语言
  13. 什么是Map Reduce
  14. Elasticsearch安全认证
  15. 5.3.2 Counter对象
  16. vue xlsx.js获取单元格数据类型的hooks 单元格类型处理
  17. 阿里天池:淘宝用户行为分析项目
  18. 云和恩墨大讲堂-Thinking in SQL,这是一次烧脑的课程
  19. qt之QSqlQuery类执行SQL语句
  20. linux及安全期中总结——20135227黄晓妍

热门文章

  1. java基础知识-----转
  2. 【漫画程序员涛哥】程序员是如何换灯泡的?
  3. (一)C++11 原生标准多线程:认识多线程
  4. 与浏览网站的访客直接进行QQ对话
  5. 一个链接,让你的网站访客直接和你qq聊天
  6. 小米10 MIUI11 安卓10安装面具获取root权限
  7. 网易企业邮箱注册后,管理员怎么管理邮箱?
  8. pytorch中的神经网络模块基础类——torch.nn.Module
  9. poj 2683 Ohgas' Fortune 利率计算
  10. 深度学习速成版01---神经网络