这个问题困扰了我挺长时间了,一直都没能比较好的解决。您看看有没有什么招儿,我再试试问题是这样的:我有一个A表,表里面存有100多万条记录A表的结构就是下面这样的:
A (用户编号, 姓名, 地址, 邮编,国家) 用户编号就是主键我现在需要将这个表里的记录信息,一条一条的处理 抽取各个列的部分信息 组成一个长的字符串存到 B表的“抽取信息”这一列当中。B表的结构就是下面这样的
B(用户编号,姓名,地址,邮编,国家,抽取信息)
我用java写代码
方法一:最开始的时候,我就是先将A表的数据弄个resultset然后在while语句里面做个循环更新B表当中的数据ResultSet rs=stmt.execute(select * from A)while (rs.next)
{
处理该条记录,得到处理出来的值;
rs.updateString("抽取信息",处理的值);把这个值放到“抽取信息”这一列;
rs.updaterow();}就按照这样的方式,我发现及时经过了好长好长时间都不能将B表更新完,而且会越来越慢越来越慢。估计每个几十分钟也弄不出来 所以根本不成。后来我就在论坛里搜索了一下,
发现有人说用存储过程处理海量数据的说法,我就学了一下,用方法二:在sql server里面写了个最最简单的存储过程 update b (列) @对应的值
然后在那个while 循环里面调用这存储过程
while (rs.next)
{
调用存储过程;}
我发现虽然速度快了, 虽然不是几十分钟吧,但是也得好多好多分钟。所以我也觉得这方法不对劲儿。
各位说一下,给指条路说我为了更新这值,到底能不能在 若干秒中得到结果呢?
补充一下: 我搜索处理海量数据的时候,我看见有人提到 ‘bulk insert', 'bcp', '利用txt文本’做中间媒介等等方法,这些我都没试验过,我对数据库的操并不熟悉,还没啥经验呢,您要是懂的话,帮帮给些提示吧,我好学学。谢了。
A (用户编号, 姓名, 地址, 邮编,国家) 用户编号就是主键我现在需要将这个表里的记录信息,一条一条的处理 抽取各个列的部分信息 组成一个长的字符串存到 B表的“抽取信息”这一列当中。B表的结构就是下面这样的
B(用户编号,姓名,地址,邮编,国家,抽取信息)
我用java写代码
方法一:最开始的时候,我就是先将A表的数据弄个resultset然后在while语句里面做个循环更新B表当中的数据ResultSet rs=stmt.execute(select * from A)while (rs.next)
{
处理该条记录,得到处理出来的值;
rs.updateString("抽取信息",处理的值);把这个值放到“抽取信息”这一列;
rs.updaterow();}就按照这样的方式,我发现及时经过了好长好长时间都不能将B表更新完,而且会越来越慢越来越慢。估计每个几十分钟也弄不出来 所以根本不成。后来我就在论坛里搜索了一下,
发现有人说用存储过程处理海量数据的说法,我就学了一下,用方法二:在sql server里面写了个最最简单的存储过程 update b (列) @对应的值
然后在那个while 循环里面调用这存储过程
while (rs.next)
{
调用存储过程;}
我发现虽然速度快了, 虽然不是几十分钟吧,但是也得好多好多分钟。所以我也觉得这方法不对劲儿。
各位说一下,给指条路说我为了更新这值,到底能不能在 若干秒中得到结果呢?
补充一下: 我搜索处理海量数据的时候,我看见有人提到 ‘bulk insert', 'bcp', '利用txt文本’做中间媒介等等方法,这些我都没试验过,我对数据库的操并不熟悉,还没啥经验呢,您要是懂的话,帮帮给些提示吧,我好学学。谢了。
解决方案 »
- SqlServer2005 多表交叉查询问题,求教
- 请问sp_MSrepl_startup的作用、功能、产生的原因。
- 触发器写法
- 各位大哥大姐,帮帮! SQL语句实现多表连接并查询指定记录.
- 哪有完整的sql sever 企业版下载啊?
- 怎么可以在回答别人问题时得到本机测试的返回结果,类似于......只要复制一下,粘贴到回答区即可?
- 如何提高插入性能
- 只用check约束如何作
- 如何从数据库写一张表到数据包,并从数据包中读出这张表?急!
- 我想用vb连接sql server,下面是全部代码,应该怎么改,请指教!(我是菜鸟)
- sqlserver查询出多条数据,排序后取第一条用哪个方法?
- 这条sql是何意?
UPDATE b
SET b.抽取信息 = ( SELECT 用户编号 + 姓名 + 地址 + 邮编 + 国家
FROM A
WHERE A.用户编号 = B.用户编号
)
INSERT INTO B
SELECT A.*,(.....) AS [抽取信息] FROM A
select a,b from A
任意的?那数据库没法处理吧!如果是多种情况还可以,任意那就不是SQL处理的了。
完了在程序中拼接SQL语句
那这样的话比就是像方法一这样的处理方式了么ResultSet rs=stmt.execute(select * from A)while (rs.next)
{
处理该条记录,得到处理出来的值;
rs.updateString("抽取信息",处理的值);把这个值放到“抽取信息”这一列;
rs.updaterow();}