`
乾坤摄
  • 浏览: 3114 次
社区版块
存档分类
最新评论

jdbc 使用sql文件插入数据

    博客分类:
  • java
 
阅读更多
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class ImportOracle {
	static class myConnection {
		private String url = "jdbc:mysql://localhost:3306/jdbc";
		private String user = "root";
		private String password = "";

		// private static JdbcUtilsSing instance = new JdbcUtilsSing();
		private static myConnection instance = null;

		private myConnection() {
		}

		public static myConnection getInstance() {
			if (instance == null) {
				synchronized (ImportOracle.class) {
					if (instance == null) {
						instance = new myConnection();
					}
				}
			}
			return instance;
		}

		static {
			try {
				Class.forName("com.mysql.jdbc.Driver");
			} catch (ClassNotFoundException e) {
				throw new ExceptionInInitializerError(e);
			}
		}

		public Connection getConnection() throws SQLException {
			return DriverManager.getConnection(url, user, password);
		}

		public void free(ResultSet rs, Statement st, Connection conn) {
			try {
				if (rs != null)
					rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			} finally {
				try {
					if (st != null)
						st.close();
				} catch (SQLException e) {
					e.printStackTrace();
				} finally {
					if (conn != null)
						try {
							conn.close();
						} catch (SQLException e) {
							e.printStackTrace();
						}
				}
			}
		}
	}

	public String readFile(String filePathAndName) {
		String fileContent = "";
		try {
			File f = new File(filePathAndName);
			String charset = getSeaset(filePathAndName);
			if (f.isFile() && f.exists()) {
				InputStreamReader read = new InputStreamReader(
						new FileInputStream(f), charset);
				BufferedReader reader = new BufferedReader(read);
				String line;
				while ((line = reader.readLine()) != null) {
					fileContent += line + " ";
				}
				read.close();
			}
		} catch (Exception e) {
			System.out.println("读取文件内容操作出错");
			e.printStackTrace();
		}
		return fileContent;
	}
	
	private void insert(String datas) throws SQLException{
		String[] datass = datas.split(";");
		 Connection conn = myConnection.getInstance().getConnection();
		 conn.setAutoCommit(false);
		 
		 Statement stat = conn.createStatement();
		 int i = 0;
		for (String string : datass) {
			
			stat.addBatch(string);
			i ++;
			if(i / 1000 == 0 ||i == datass.length)
			{
				stat.executeBatch();
				conn.commit();
			}
		}
		
	}

	private String getSeaset(String path) {
		try {
			File file = new File(path);

			InputStream ios = new java.io.FileInputStream(file);

			byte[] b = new byte[3];

			ios.read(b);

			ios.close();

			if (b[0] == -17 && b[1] == -69 && b[2] == -65)
				return "UTF-8";
			else
				return "GBK";
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return "GBK";
	}

	public static void main(String[] args) throws SQLException {
		ImportOracle ip = new ImportOracle();
		ip.insert(ip.readFile("D:\\123.txt"));
	}
}
0
5
分享到:
评论
3 楼 leonayx123 2013-01-29  
getInstance
javaking1999 写道
先不说你这样做的业务逻辑是否正确,你的单例模式就写错了,
private static myConnection instance = null; 
这个要加上volatile 关键字。

这个应该没关系,他在getInstance里,在初始化的时候对Class加了锁。
2 楼 javaking1999 2013-01-28  
先不说你这样做的业务逻辑是否正确,你的单例模式就写错了,
private static myConnection instance = null; 
这个要加上volatile 关键字。
1 楼 leonayx123 2013-01-28  
其实是读取了每一行的文件然后依次执行么? 你的程序是在什么业务常见下出现的?

如果只是读取文件执行,我可以推荐可以不用jdbc。直接写程序调用控制台执行sql文件不是更快?

相关推荐

    jdbc连接数据库的方式2

    例如,如果我们想创建一个将名字O'Reilly插入表中的SQL命令,则必须使用二个相连的“''”号替换O'Reilly中的“'”号。完成这些工作的最好的方法是创建一个完成替换操作的helper方法,然后在连接字符串心服用公式表达...

    java 连接SQL Server所需的JDBC资源文件

    用Eclipse来连接数据库,以及进行相关的数据操作所需要导入的JDBC资源

    JSP中使用JDBC访问SQL Server 2008数据库示例

    (1)下载对应数据库版本的jdbc驱动并安装,注意安装后的得到的三个文件msbase.jar,mssqlserver.jar,msutil.jar,将其拷贝到jsp项目的WEB-INF/lib下面,也拷贝到Tomcat安装目录的lib下面,没有具体测试,应该和...

    根据MyBatis或iBatis的SQLMapper文件反向生成数据库表

    解析SQLMapper文件: 首先需要解析SQLMapper文件,提取其中定义的SQL语句,包括创建表、修改表结构、插入数据等相关SQL语句。 解析SQL语句: 对于每一条SQL语句,需要解析其中的表名、字段名、数据类型、约束条件等...

    Sql2NoSql-Importer:将Sql数据(使用任何JDBC驱动程序)导入到NoSQL数据库

    将您的Sql数据(支持任何JDBC驱动程序,例如MySQL,Oracle,PostgreSQL)导入NoSQL数据库。 当前受支持: Mongodb , CouchDB和Elasticsearch 数据可以批量导入以减少处理时间,并且可以转发到多个Elasticsearch...

    基于nifi将mysql数据导入clickhouse

    基于nifi将mysql数据导入clickhouse。 给出了基于http与JDBC两种方式

    基于框架的Web开发-使用springJDBC入门.doc

    本章文件夹下有sampledb.sql文件,将其导入mysql中,会创建一个数据库sampledb,包含两张数据表。导入方法如下图: 3 项目组织 创建一个java工程,名为springJDBC,包和类组织如下图所示。 测试资源文件夹放配置文件...

    DBeaver是一个通用的数据库管理工具和SQL客户端

    DBeaver 是一个通用的数据库管理工具和 SQL 客户端,支持 MySQL, PostgreSQL, Oracle, ...DBeaver 提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,浏览和导出数据,处理BLOB/CLOB 数据,修改数据库结构等等。

    sqldb2es:自动将数据从SQL数据库同步到ElasticSearch存储库中

    sqldb2es是一个Java应用程序,它从JDBC数据源(表格数据)中获取数据,以供以结构化(JSon)数据格式进行索引。 sqldb2es允许通过将ElasticSearch JSon对象(也称为文档)映射到SQL数据库关系数据来定义它们的结构...

    jsp+servlet+jdbc实现简单的购物车实例.zip

    亲自测试可用,放心下载! 项目描述 jsp+servlet+jdbc实现简单的购物车实例,购物数据通过session存储 ...数据库文件:db_test.sql http://localhost:8080/shopCar 登录账号yk 123456 具体登录账号请查看表t_user

    java和SqlServer的Swing项目

    数据库已分离好,下载后往SqlServer附加我的数据库文件,还有在MyEclipse导入我的项目就就可以使用了(注意我的SqlServer的密码可能和你的不一样,你要根据自己的密码修改我项目里面JDBC的密码,是写在一个db....

    DataGear数据可视化分析平台

    DataGear是一款数据可视化分析平台,使用Java语言开发,采用浏览器/服务器架构,支持SQL、CSV、Excel、HTTP接口、JSON等多种数据源,主要功能包括数据管理、SQL工作台、数据导入/导出、数据集管理、图表管理、看板...

    ORACLE,mysql,sqlserver,sybase数据库装文本软件

    使用方法: java -jar lynload.jar,即可看到中文命令行参数(unix下需设置gbk字符集环境才能看中文,没gbk环境不能看中文,但不影响导入数据)。 特色: 1.同时支持多个数据库. 2.支持任意字符串作为列分隔符,什么...

    jdbc基础和参考

    从Jdk6.0以后要求,JDBC 4.0 Drivers 必须包括 META-INF/services/java.sql.Driver 文件,有了这个文件以后不需要在显示的使用Class.forName来进行驱动的注册 Oracle数据库进行连接的时候,使用的驱动类: 1....

    Java连接SQL Server 2000 驱动

    1、下载SQL JDBC 驱动,3.0版 的jar包(一定要3.0版的,4.0版的只能用在SQL server 2005版以上,而且Maven Repository找不到的,只能自己加入本地仓库或直接放入项目中)。 2、导入jar包到本地仓库或项目目录中。 3...

    这是一个基于SSM框架的在线教育网站

    IntellliJ IDEA IntelliJ 如何创建数据表和SQL文件 2. 导入项目 项目导入 3. 配置maven,选择jdk运行环境 windows10如何安装Maven 选择Maven 文件 选择Maven jdk 配置 jdk 配置 4. 配置项目 属性文件路径:\src\main...

    SQLite数据库 sqlitedll库文件 sqlite驱动JAR包 sqlite工具

    5 * 程序中创建数据库、创建表、然后插入数据, 6 * 最后读出数据显示出来 7 * @author zieckey (http://zieckey.cublog.cn) 8 */ 9 public class TestSQLite{ 10 public static void main(String[] args){ 11 ...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

     通过提示及配置文件等来控制执行计划;  在程序中优化查询而无需改动代码。  作为Oracle SQL经典著作之一,本书为SQL开发人员指明了前行的方向,赋予了他们不断开拓的动力。 作者简介  KAREN MORTON 研究...

    数据库课设,java课设都可用,小型超市商品管理系统 课程设计

    3、导入数据看:将supermarketdb.sql文件导入数据库中后 4、修改项目根目录下的c3p0-config.xml的配置文件: <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:...

Global site tag (gtag.js) - Google Analytics