正文
oracle怎么多行插入 oracle将多行合并到一起
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
oracle怎么一次插入多行数据
select * from table for update 点击锁oracle怎么多行插入,复制进去就行了oracle怎么多行插入,想插多少就插多少,插完,点击勾,然后把锁关闭
Oracle数据的批量插入
前两天接到一个需求——需要编程将SQL Server中oracle怎么多行插入的数据插入至Oracle 数据大约有 多万条记录 开始oracle怎么多行插入的时候我采取了直接构建SQL插入oracle怎么多行插入的方式 结果耗时太长 为了提高性能我上网找了资料 最终采用DataAdapter批量插入至Oracle 提高了性能
代码如下
一 直接构建SQL语句插入
VB NET
sw Start()
Read Z J from SQL Server
Dim sqlCmd As New SqlCommand()
sqlCmd Connection = sqlConnection
sqlCmd CommandText = SELECT * FROM Z J
Dim sqlDr As SqlDataReader
sqlDr = sqlCmd ExecuteReader()
Dim cmdInsertZ J As New OracleCommand()
cmdInsertZ J Connection = oraConnection
cmdInsertZ J CommandText = BuildSQLStatement(SQLType Insert z j )
Dim plantLever material oldMaterialNum materialDescription As Object
While sqlDr Read()
plantLever = ReadSqlDataReader(sqlDr )
material = ReadSqlDataReader(sqlDr )
oldMaterialNum = ReadSqlDataReader(sqlDr )
materialDescription = ReadSqlDataReader(sqlDr )
Insert to Oracle table Z J
cmdInsertZ J Parameters AddWithValue( :plantLever plantLever)
cmdInsertZ J Parameters AddWithValue( :material material)
cmdInsertZ J Parameters AddWithValue( :oldMaterialNum oldMaterialNum)
cmdInsertZ J Parameters AddWithValue( :materialDescription materialDescription)
cmdInsertZ J ExecuteNonQuery()
End While
sw Stop()
Loger Info( Reading z j form sql sever used sw Elapsed TotalSeconds ToString())
二 采用DataAdapter实现批量插入
VB NET
sw Start()
Read Z J from SQL Server
Dim sqlCmd As New SqlCommand()
sqlCmd Connection = sqlConnection
sqlCmd CommandText = SELECT * FROM Z J
Dim sqlDr As SqlDataReader
sqlDr = sqlCmd ExecuteReader()
Dim cmdInsertZ J As New OracleCommand()
cmdInsertZ J Connection = oraConnection
cmdInsertZ J CommandText = BuildSQLStatement(SQLType Insert z j )
Dim dtSqlZ J As New DataTable
dtSqlZ J Columns Add( plantLever )
dtSqlZ J Columns Add( material )
dtSqlZ J Columns Add( oldMaterialNum )
dtSqlZ J Columns Add( materialDescription )
Dim plantLever material oldMaterialNum materialDescription As Object
While sqlDr Read()
plantLever = ReadSqlDataReader(sqlDr )
material = ReadSqlDataReader(sqlDr )
oldMaterialNum = ReadSqlDataReader(sqlDr )
materialDescription = ReadSqlDataReader(sqlDr )
dtSqlZ J Rows Add(plantLever material oldMaterialNum materialDescription)
End While
sw Stop()
Loger Info( Reading z j form sql sever used sw Elapsed TotalSeconds ToString())
sw Start()
Dim oraDa As New OracleDataAdapter()
oraDa InsertCommand = cmdInsertZ J
oraDa InsertCommand Parameters Add( :plantLever OracleType Char plantLever )
oraDa InsertCommand Parameters Add( :material OracleType Char material )
oraDa InsertCommand Parameters Add( :oldMaterialNum OracleType Char oldMaterialNum )
oraDa InsertCommand Parameters Add( :materialDescription OracleType Char materialDescription )
oraDa InsertCommand UpdatedRowSource = UpdateRowSource None
oraDa UpdateBatchSize = Adjust the batch size based on testing result
oraDa Update(dtSqlZ J)
sw Stop()
lishixinzhi/Article/program/Oracle/201311/18480
Oracle中使用PL/SQL怎样用循环插入多条数据?
使用loop循环,比如:
for item in (select a,b,c from table_a where 条件) loop
insert into table_b(a,b,c) values (item.a,item.b,item.c);
end loop;
也可以使用索引表循环,以上只是一个简单的例子,需要根据你的具体情况选择循环方式。
1、采用insert into values 语句插入一条,写很多条语句即可多条数据,这种主要针对于离散值以及一些基础信息的录入,如:insert into test(xh,mc) values('123','测试');
如果插入的数据有规律,可利用for、loop循环插入,主要用于批量生成测试数据
begin
for i in 1 .. 100 loop
insert into test(xh,mc) values(i||'','测试');
end loop;
end ;。
2、采用insert into selct from 语句来一次性插入一个集合,这种主要依据于要插入的数据源已经存储于数据库对象中,或者利用dual虚表来构造数据,经过加工后写入一个集合。
insert into test (xh,mx) select '123','测试' from dual;
3、采用plsql等工具、或者oracle的imp、impdp命令来导入,这种主要用数据库与数据库之间的大批量数据导入,导入的数据格式为plsql的pde、oracle的dmp等。dmp文件可使用
table_exists_action参数控制导入动作:replace替换原表,truncate清除原表数据再导入,append增量导入数据,当然impdp数据泵的导入要依赖于directory路径。
impdp 用户名/密码 dumpfile=123.dmp logfile=123.log directory=imp_dir tables=test table_exists_action=append。
4、使用excel文件直接拷贝。这种主要用于要写入的数据已是excel文件或者行列分明的其它格式文件,每一列的值和表结构相对应,可直接打开表的行级锁,把数据拷贝进入。
Oracle 批量插入数据怎么做
oracle批量插入数据使用sqlldr。
首先将要导入的excel文件另存为csv格式(默认逗号间隔,另存为csv,不只是改后缀名)
然后用sqlldr导入。
sqlldr的参数很多,简单的几个就可以了:
建一个控制文件control.txt:
load data
infile 'f:\test.csv'
into table test1
(id char terminated by ',',
name char terminated by ',',
height char terminated by ',',
birth char terminated by whitespace)
----这里根据需要,修改数据文件的名字和路径。括号里面的字段名和字段数也根据实际情况修改。由于保存的是csv,字段间以逗号隔开,因此控制文件里定义最后一个字段以whitespace来分隔,其它的用','
然后使用sql*loader:
sqlldr userid=USERNAME/PASSWORD@XXXX control=f:\control.txt log=f:\test.log bad=f:\testbad.csv
userid后跟用户名密码,@后的是网络服务名,需要在客户端的tnsnames.ora文件里定义。control后的值是刚刚建的控制文件的路径,日志将生成在log参数指定的位置上,如果有记录没有导入成功,这些记录会放置在bad后指定的文件里。
oracle 多行插入(有序列)
insert into people(id, name)
SELECT seq_people.nextVal,C FROM (
select 'zhangsan' C from dual union all
SELECT 'lisi'C from dual union all
SELECT 'wangwu'C from dual);
如何向一个oracle表中快速插入很多条数据
Oracle数据oracle怎么多行插入的批量插入
前两天接到一个需求——需要编程将SQL Server中的数据插入至Oracle。数据大约有20多万条记录。开始的时候oracle怎么多行插入我采取了直接构建SQL插入的方式,结果耗时太长。为了提高性能oracle怎么多行插入我上网找了资料。最终采用DataAdapter批量插入至Oracle,提高了性能。
代码如下:
一,直接构建SQL语句插入
VB.NET Code
二,采用DataAdapter实现批量插入
VB.NET Code
在oracle怎么多行插入我的环境中批量插入24万笔记录用时大约260s左右。
貌似SQL Server中.net驱动程序提供了SqlBulkCopy类来提高大量数据导入的性能。有需要的朋友可以查下MSDN。
关于oracle怎么多行插入和oracle将多行合并到一起的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。