包含JAVA的sqlbulk的词条

博主:adminadmin 2022-11-25 19:38:07 81

今天给各位分享JAVA的sqlbulk的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

如何在JAVA中创建sql 数据库

Java要连接数据库,那么首先你必须安装mysql数据库。

安装好mysql之后,安装JDK了。

安装好JDK之后,就是安装Eclipse了,要支持JDK版本,Eclipse安装的时候会自动去找JDK安装位置的,解压版的Eclipse,就要配置eclipse.ini文件了,将对应的JDK配置好,这些已经准备就绪的时候,就到mysql中创建数据库和表。

先创建数据库:

CREATE DATABASE SCUTCS;

接着,创建表:

CREATE TABLE STUDENT

(

SNO CHAR(7) NOT NULL,

SNAME VARCHAR(8) NOT NULL,

SEX CHAR(2) NOT NULL,

BDATE DATE NOT NULL,

HEIGHT DEC(5,2) DEFAULT 000.00,

PRIMARY KEY(SNO)

);

然后插入数据,可以用SQL语句insert into 表名 values (value1, value2, ...);

编写.java文件来演示一下如何访问MySQL数据库。

import java.sql.*;

public class JDBCTest {

public static void main(String[] args){

// 驱动程序名 String driver = "com.mysql.jdbc.Driver";

// URL指向要访问的数据库名scutcs String url = "jdbc:mysql://127.0.0.1:3306/scutcs";

// MySQL配置时的用户名 String user = "root"; // MySQL配置时的密码 String password = "root";

try { // 加载驱动程序 Class.forName(driver);

// 连续数据库 Connection conn = DriverManager.getConnection(url, user, password);

if(!conn.isClosed()) System.out.println("Succeeded connecting to the Database!");

// statement用来执行SQL语句 Statement statement = conn.createStatement();

// 要执行的SQL语句 String sql = "select * from student";

// 结果集 ResultSet rs = statement.executeQuery(sql);

while(rs.next()) // 选择sname这列数据 name = rs.getString("sname

// 输出结果 System.out.println(rs.getString("sno") + "\t" + name); }

rs.close(); conn.close();

} catch(ClassNotFoundException e) {

System.out.println("Sorry,can`t find the Driver!"); e.printStackTrace();

} catch(SQLException e) {

e.printStackTrace();

} catch(Exception e) {

e.printStackTrace();

} } }

在JAVA中的SQL语言

Transact_SQL小手册

*******************Transact_SQL********************

--语 句 功 能

--数据操作

SELECT --从数据库表中检索数据行和列

INSERT --向数据库表添加新数据行

DELETE --从数据库表中删除数据行

UPDATE --更新数据库表中的数据

--数据定义

CREATE TABLE --创建一个数据库表

DROP TABLE --从数据库中删除表

ALTER TABLE --修改数据库表结构

CREATE VIEW --创建一个视图

DROP VIEW --从数据库中删除视图

CREATE INDEX --为数据库表创建一个索引

DROP INDEX --从数据库中删除索引

CREATE PROCEDURE --创建一个存储过程

DROP PROCEDURE --从数据库中删除存储过程

CREATE TRIGGER --创建一个触发器

DROP TRIGGER --从数据库中删除触发器

CREATE SCHEMA --向数据库添加一个新模式

DROP SCHEMA --从数据库中删除一个模式

CREATE DOMAIN --创建一个数据值域

ALTER DOMAIN --改变域定义

DROP DOMAIN --从数据库中删除一个域

--数据控制

GRANT --授予用户访问权限

DENY --拒绝用户访问

REVOKE --解除用户访问权限

--事务控制

COMMIT --结束当前事务

ROLLBACK --中止当前事务

SET TRANSACTION --定义当前事务数据访问特征

--程序化SQL

DECLARE --为查询设定游标

EXPLAN --为查询描述数据访问计划

OPEN --检索查询结果打开一个游标

FETCH --检索一行查询结果

CLOSE --关闭游标

PREPARE --为动态执行准备SQL 语句

EXECUTE --动态地执行SQL 语句

DESCRIBE --描述准备好的查询

---局部变量

declare @id char(10)

--set @id = '10010001'

select @id = '10010001'

---全局变量

---必须以开头

--IF ELSE

declare @x int @y int @z int

select @x = 1 @y = 2 @z=3

if @x @y

print 'x y' --打印字符串'x y'

else if @y @z

print 'y z'

else print 'z y'

--CASE

use pangu

update employee

set e_wage =

case

when job_level = ’1’ then e_wage*1.08

when job_level = ’2’ then e_wage*1.07

when job_level = ’3’ then e_wage*1.06

else e_wage*1.05

end

--WHILE CONTINUE BREAK

declare @x int @y int @c int

select @x = 1 @y=1

while @x 3

begin

print @x --打印变量x 的值

while @y 3

begin

select @c = 100*@x + @y

print @c --打印变量c 的值

select @y = @y + 1

end

select @x = @x + 1

select @y = 1

end

--WAITFOR

--例 等待1 小时2 分零3 秒后才执行SELECT 语句

waitfor delay ’01:02:03’

select * from employee

--例 等到晚上11 点零8 分后才执行SELECT 语句

waitfor time ’23:08:00’

select * from employee

***SELECT***

select *(列名) from table_name(表名) where column_name operator value

ex:(宿主)

select * from stock_information where stockid = str(nid)

stockname = 'str_name'

stockname like '% find this %'

stockname like '[a-zA-Z]%' --------- ([]指定值的范围)

stockname like '[^F-M]%' --------- (^排除指定范围)

--------- 只能在使用like关键字的where子句中使用通配符)

or stockpath = 'stock_path'

or stocknumber 1000

and stockindex = 24

not stocksex = 'man'

stocknumber between 20 and 100

stocknumber in(10,20,30)

order by stockid desc(asc) --------- 排序,desc-降序,asc-升序

order by 1,2 --------- by列号

stockname = (select stockname from stock_information where stockid = 4)

--------- 子查询

--------- 除非能确保内层select只返回一个行的值,

--------- 否则应在外层where子句中用一个in限定符

select distinct column_name form table_name --------- distinct指定检索独有的列值,不重复

select stocknumber ,"stocknumber + 10" = stocknumber + 10 from table_name

select stockname , "stocknumber" = count(*) from table_name group by stockname

--------- group by 将表按行分组,指定列中有相同的值

having count(*) = 2 --------- having选定指定的组

sql server bulk insert 与bcp 哪个快

今天做了一个基于SQL Server的文本文件批量导入工具,和大家分享一下心得。

方案一:

遍历文本文件,解析每一行,形成SQL语句后向数据库插入。

方案二

遍历文本文件,解析每一行,将SQL语句保存到文本文件然后执行。

方案三

使用SQL Server Bulk Insert 功能披露导入数据,然后在数据库中做数据处理。

刚开始用方案一做的,50MB文本文件导入大约20-25分钟,后来进行了优化,采用数据批量插入,性能提升不大。

继续优化,使用多线程向数据库中插入数据,性能提升10-20%左右,效果也不好。

方案二没有完全测试,主要是生成SQL文件耗时15分钟左右,不太理想。

最后使用BULK INSERT ,然后在数据库中写脚本对数据进行处理,50MB文件10秒即可导入

FQuery.SQL.Text := 'BULK INSERT LOGDATA FROM ' + QuotedStr(FFileName)

+ ' WITH (FIELDTERMINATOR = '','', ROWTERMINATOR = ''\n'', BATCHSIZE = 500)';

FQuery.ExecSQL;

最后执行大量的UPDATE语句,将数据格式化

建议在做大数据量导入的时候还是用BULK INSERT ,SQL SERVER 性能在那里摆着,一个SQL 4ms,1000行就要4秒,根本快不了

测试java的insert 同使用9i以后的bulk Insert 的速度.

测试结果显示通过bulk Insert 速度相当的快.

100000条记录

insert ,---------------93秒

bulk insert -------------0.441秒

环境:

oracle 10.2.0.3 Windows 2000Server

java

代码:

SQL desc a

Name Type Nullable Default Comments

---- ------------ -------- ------- --------

ID INTEGER Y

NAME VARCHAR2(20) Y

bulk Insert 使用的类型及过程

create or replace type i_table is table of number(10);

create or replace type v_table is table of varchar2(10);

create or replace procedure pro_forall_insert(v_1 i_table,v_2 v_table)

as

c integer;

begin

forall i in 1.. v_1.count

insert into a values(v_1(i),v_2(i));

end;

测试的java代码:

public class testOracle {

public testOracle() {

Connection oraCon = null;

PreparedStatement ps = null;

Statement st = null;

ResultSet rs = null;

try {

try {

Class.forName("oracle.jdbc.driver.OracleDriver");

} catch (ClassNotFoundException ex) {}

oraCon = DriverManager.getConnection("jdbc:oracle:thin:@192.168.15.234:1521:ora10g", "imcs","imcs");

oraCon.setAutoCommit(false);

} catch (SQLException ex) {

ex.printStackTrace();

}

CallableStatement cstmt = null;

oracle.sql.ArrayDescriptor a = null;

oracle.sql.ArrayDescriptor b = null;

if (1 == 1 )

{

Object[] s1 = new Object[100000];

Object[] s2 = new Object[100000];

for (int i = 0; i 100000; i++) {

s1[i] = new Integer(1);

s2[i] = new String("aaa").concat(String.valueOf(i));

}

try {

a = oracle.sql.ArrayDescriptor.createDescriptor("I_TABLE", oraCon);

b = oracle.sql.ArrayDescriptor.createDescriptor("V_TABLE", oraCon);

ARRAY a_test = new ARRAY(a, oraCon, s1);

ARRAY b_test = new ARRAY(b, oraCon, s2);

cstmt = oraCon.prepareCall("{ call pro_forall_insert(?,?) }");

cstmt.setObject(1, a_test);

cstmt.setObject(2, b_test);

long aaaa = System.currentTimeMillis();

System.out.println(System.currentTimeMillis());

cstmt.execute();

oraCon.commit();

System.out.println(System.currentTimeMillis()-aaaa);

} catch (Exception e) {

e.printStackTrace();

}

}

else

{

try

{

PreparedStatement oraPs = null;

String oraInsertSql =

"insert into a values(?,?)";

oraPs = oraCon.prepareStatement(oraInsertSql);

long aaaa = System.currentTimeMillis();

System.out.println(System.currentTimeMillis());

for (int i = 0; i 100000; i++)

{

oraPs.setInt(1,i);

oraPs.setString(2, new String("aaa").concat(String.valueOf(i)));

oraPs.executeUpdate();

}

oraCon.commit();

System.out.println(System.currentTimeMillis()-aaaa);

}

catch (SQLException ex)

{

System.out.print("dddddd");

System.out.print(ex.getMessage());

}

}

try {

jbInit();

} catch (Exception ex) {

ex.printStackTrace();

}

}

public static void main(String args[]) {

testOracle a = new testOracle();

}

private void jbInit() throws Exception {

}

};

java 中使用sql语句

import java.sql.*;

/*

* 新建一个工程,用下面的main()函数代替新建工程里的main()函数

*/

public static void main(String[] args) {

try {

Class.forName("oracle.jdbc.driver.OracleDriver");

String url = "jdbc:oracle:thin:@172.19.16.15:1521:common";

String user = "cvbom6";

String pwd = "dcvbom6";

Connection conn = DriverManager.getConnection(url, user, pwd);

// renturn conn;

Statement stmt = conn.createStatement();

ResultSet rs = stmt

.executeQuery("select max(t.id) from ty_student t");

while (rs.next()) {

String a = rs.getString(1);

System.out.println(a);

}

} catch (Exception e) {

e.printStackTrace();

}

}

java中使用sqlbulkcopy 需要什么jar

这个异常类型就在JSDK java.sql 包下,这个组件不需要任何其他辅助的jar包

关于JAVA的sqlbulk和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-25,除非注明,否则均为首码项目网原创文章,转载请注明出处。