干嘛弄这么麻烦啊数据量很大吗要是很大的话才需要你说的那种方式做压缩然后,你需要对得到的dataset根据其字段名组合成sql
更新到本地数据库但是这个台麻烦了
简单的办法是在本地数据库B上建立对远程数据库A的DBlink然后对远程数据库上的表在本地建立别名
那么你访问别名就和访问本地表一样简单只要你会sql
搞个数据库的批量本地插入还是很简单的因为不知道你是什么数据库因此你可以插下对应数据库DBLINk的资料不过这种方式就是没法对数据压缩可能会占用点带宽
常见的insert语句,向数据库中,一条语句只能插入一条数据:
insert
into
persons
(id_p,
lastname
,
firstname,
city
)
values(204,'haha'
,
'deng'
,
'shenzhen');
(如上,仅插入了一条记录)
怎样一次insert插入多条记录呢?
使用示例:
insert
into
persons
(id_p,
lastname
,
firstname,
city
)
values
(200,'haha'
,
'deng'
,
'shenzhen'),
(201,'haha2'
,
'deng'
,
'gd'),
(202,'haha3'
,
'deng'
,
'beijing');
这样就批量插入数据了,
遵循这样的语法,就可以批量插入数据了。
执行成功,截图:
据说,在程序开发中,一次插入多条数据,比逐次一条一条的插入数据,效率高很多
所以在程序开发的时候,使用此批量插入,也是比较不错的。
此语句在mysql
5,
postgresql
93执行通过。
可以使用jdbc预编译+批量更新,这样的执行效率最高。
具体是这样使用的:
循环2000条数据例如数据被装到了一个名叫dataList的List<Map<String,String>>中,那么批量更新就是这样执行的
Map map = null;
String data1= "";
String data2 = "";
String sql = insert into biao values(,);
PreparedStatement preStmt = connprepareStatement(sql);
for(i = 0;i<dataListsize();i++){
map = dataListget(i);
data1=mapget("data1");
data2 = mapget("data2");
preStmtsetString(1,data1);
preStmtsetString(2, data2);
preStmtaddBatch();
}
preStmtexecuteBatch();
preStmtclearBatch();
c#,sqlserver。写一下我将前端获取到的缓存数据批量插入数据库的表。
在sqlserver数据库下,展开(可编程性)-->(类型)-->(用户自定义表类型)。建一个自定义表类型,表类型结构即是前端传过来的表格数据结构。例如:
CREATE TYPE [dbo][DT_SAP_ASN] AS TABLE(
[GUID] [nvarchar](50) NULL,
[VBELN_SIP] [nvarchar](30) NULL,
[POSNR_SIP] [nvarchar](30) NULL
)
GO
然后再写个存储,用于调用此存储批量将前端传入的datatable缓存数据批量插入数据库的某个表。例如:
CREATE PROC [dbo][SP_EDI_SAP_ASN]
(
@DT_SAP_ASN DT_SAP_ASN READONLY --输入参数,刚刚自定义的表类型
)
AS
BEGIN
SET NOCOUNT OFF
INSERT INTO dboEDI_ASN_Log
( ID ,
GUID ,
VBELN_SIP ,
POSNR_SIP ,
)
SELECT NEWID() ,
GUID ,
VBELN_SIP ,
POSNR_SIP
FROM @DT_SAP_ASN
SET NOCOUNT ON
END
当然,去重的话在inset那边select表#DT_SAP_ASN distinct一下即可
以上就是关于如何实现数据库的批量插入与更新~~全部的内容,包括:如何实现数据库的批量插入与更新~~、怎么批量插入mysql数据库(1000条)、使用JDBC在MySQL数据库中如何快速批量插入等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)