包含JAVA的sqlbulk的词条
今天给各位分享JAVA的sqlbulk的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、如何在JAVA中创建sql 数据库
- 2、在JAVA中的SQL语言
- 3、sql server bulk insert 与bcp 哪个快
- 4、java 中使用sql语句
- 5、java中使用sqlbulkcopy 需要什么jar
如何在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和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-25,除非注明,否则均为
原创文章,转载请注明出处。