直接数据库 *** 作嘛 全部改一样的就用update dealers set buynum where 。。
不一样的话就存储结构吧。
用java更新 最好用批处理PreparedStatement stamt "update "
for(){ stamtaddBatch(); }
stamtexecuteBatch();
最好的方法是批量修改,即每次修改5000条(一次修改不要超过一万条,否则影响性能) 虽然在11g中,我们也可以选择使用merge命令,但你的这种情况最好先修改一部分然后看看影响,毕竟在生产环境作这样的 *** 作风险很大。如果是误 *** 作,最好还是请DBA来恢复,虽然这样做会被挨骂,但总比错上加错,最后连挨骂的机会都没有要好得多。如果对这些修改真的有信心,而只是从性能考虑,那可以用下面的方法(pk_col 是表的主键
1、构建临时表进行主键关联更新
需求:T1表有千万级别的数据量,需要更新这个表的字段a,b满足2个条件的记录。
做法:一般业务会将条件通过excel表格提供给开发,那么开发首先需要将这个excel表格的内容插入到临时表T2中,考虑到a,b都不是主键,那么需要将a,b转化成主键后再插入到T2表中,T2表中还可以保存更新前的数据,方便做数据回滚,T2表中有数据后,就可以执行下面脚本进行更新 *** 作:
ps:c,d是需要更新的 *** 作,e,f是条件。必须强调的是id必须是主键
1、构建临时表进行主键关联更新
需求:T1表有千万级别的数据量,需要更新这个表的字段a,b满足2个条件的记录。
做法:一般业务会将条件通过excel表格提供给开发,那么开发首先需要将这个excel表格的内容插入到临时表T2中,考虑到a,b都不是主键,那么需要将a,b转化成主键后再插入到T2表中,T2表中还可以保存更新前的数据,方便做数据回滚,T2表中有数据后,就可以执行下面脚本进行更新 *** 作:
ps:c,d是需要更新的 *** 作,e,f是条件。必须强调的是id必须是主键
UPDATE tableNmae SET columnName = value WHERE columnName = otherValue;
UPDATE tableNmae SET columnName = value WHERE columnName IN (otherValue1, otherValue2);
当然还有其他写法,这里只是举个例子。
首先要使用 IN 限定修改的数据,不使用 IN 的话在此语句中未进行设置值的会变成 NULL 或者默认值。
该语句会将 column2 值为相应 column2Value 的数据 column1 字段修改为对应的 column1Value 。
既然你已经弄到excel里了,直接用 in ('xxx','xxx',,'xxx') 就好,如果太多了就分几个语句去执行
update VIPCard set cFromBraCode='002' where cVIPCode in ('xxx',,'xxx');
把对应的数据拷到你常用的文本编辑器里,然后把 回车 字符替换为 ','
或者在excel里前面加一列全 单引号,后面加一列全 单引号加逗号,然后一起拷出去后把 tab字符 替换掉
再或者你在excel里用公式挨个往下把 对应数据加上单引号分隔连起来也行
用sqldbx,可以像excel一样直接编辑数据库里的数据。
先写select查询出要编辑的数据并group by聚合一下,然后用sqldbx直接改聚合后的结果,改一个就相当于把聚合的这一组全改了。
前面2周我们在sqlserver里做数据分析前的清洗工作,就是这么干的。
在数据库中访问其他数据库的表的方式为:
DatabaseNameUserTableName
如你想用dbo的身份访问db1的tb1表,插入数据
insert into db1dbotb1() values();
如果要批量插入不同的数据库,只能依靠存储过程了。
首先声明一点mysql不支持同时更新多行数据,但是msql支持同时插入多行数据
但是我们可以有一个崭新的思路去解决这个问题
只出思路
第一步,当你把展现给用户的数据从数据库读取出来的时候同时建立一个临时表结构和你之前读数据的表一样
第二部当用户更改了数据之后把所有更新过的数据插入到临时表里面一个insert语句就搞定了
第三步将临时表里面的ID(应该是唯一的主键)从读取数据那个表里面delete掉这个一条delete in就搞定了
第四部将临时表里面的数据插入到数据表里面去insert into 表 where 子查询从临时表
这样你要实现的效果就实现了这个也应该是比较简单的实现方式
还有别的实现方式比如说去php里面建立个抽象层有需要可以重新提问
以上就是关于java 如何批量修改一张表里面多条数据的某个字段的值,需要修改的字段值是自定义的。全部的内容,包括:java 如何批量修改一张表里面多条数据的某个字段的值,需要修改的字段值是自定义的。、如何批量修改oracle数据库中某一个表中的某一列数据、MySQL 一条SQL同时UPDATE多条记录等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)