字段转换过程中的问题! 已有一个数据库实例,现在需要更改某张表T_PRODUCT中的TYPE_I字段类型,现在这张表中数据量已有20万条左右,TYPE_I 内容本应为int型,原设计中误操作为varchar型,现在需要由varchar 转换为 int型,但是直接转换数据库基本上停止响应,请教优化方法,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 varchar -- intcast (varchar as int)如果有错,就是你的varchar里面有数据不是数字,可能包含字母或其他符号.找到他,修改或删除他,再cast试试.如果行就可以该字段类型了. 晕,楼上的,dawugui的方法才是正解。就算要删也只删除列就够了。 支持:dawugui(潇洒老乌龟) 的说法.也可以试试在原表中添加一列,把TYPE_I列的数据导到新增列(估计有不合法数据呢)成功的话删除TYPE_I列,然后把新添列改名为TYPE_I不过我还是觉得直接修改的"效率"最高呢.呵呵 用isnumeric()检索出不能转换的数据,处理后,再转换 to dobear_0922(do熊) :首先,你自己试试在一张20W行数据的表中直接修改一列或者新增一列看看需要多久。对待这种问题最好的方法就是重建表,然后再把原来的数据导入进去。先更改原表的名称,再创建新表,最后导入数据,20W行的数据,用DTS导入估计也就几分钟的事情,但是如果你要直接在原表上修改表结构,你试试看,我估计八成你的机器会当掉,就算运气好能修改成功,那估计也是1千年以后的事情了T_T 好像说 添加列->复制数据->删除原列->修改列名这样的做法不错的啊.不知道加上20W行记录是不是就不行了.幽灵brother 有试过吗.我不想当机,也等不了一千年的.麻烦你告诉我结果就好了.呵呵 to juntor() :-- 测试环境IBM3850,内存8G,CPU:4*2(双核),操作系统:Windows2003 Server Enterprise Edition ,数据库:SQL Server 2000修改一30+W行的表结构,方法步骤如下:1.修改原字段A INT----〉varchar2.新增字段B 3.保存修改测试结果:等待中.......约30分钟后,察看服务器状态,CPU:1%;内存:6+G(设置了AWE,固定为6G)企业管理器无响应强制关闭企业管理器---------------------以上测试操作均在企业管理器中操作,代码的测试我没有做,我不知道这个修改动作要保存多久才能成功,我只有等待30分钟的耐心,如果你有兴趣,可以自己试试,也许31分钟的时候会成功,到时记得告诉我结果,谢谢! 谢谢,幽灵兄弟的测试,你的经历告诉我不能在企业管理器中作直接的类型转换.我说的方法里没有直接修改字段类型的动作的.假设原来的表是这样的tb(id varchar(10),其它字段)(这些操作也许用代码的方式来做会好点)1.修改tb表id字段名为iid2.添加一列,整型,取名叫id3.把iid的数据更新到id(前提是数据可以转换成功,我想最耗时的是这步)4.删除iid列 SQL有意思的问题 liunx vmwareworkstation ping 不通的问题 求更新数据库表的存储过程 关于满足某种条件之后sql数据库自动退出或锁定数据库表的问题 怎么备份数据库的文件组 sql 用户定义函数 存储过程 sql语句和存储过程的优化问题??? 当把服务器的名改了,Microsoft SQL Server就不能正常启动了,为什么?谢谢!! SQL2005多条查询子句插入新表??江湖救急!!! 大家帮忙,我是新手 急问关于远程写入数据库的问题
找到他,修改或删除他,再cast试试.
如果行就可以该字段类型了.
就算要删也只删除列就够了。
在原表中添加一列,把TYPE_I列的数据导到新增列(估计有不合法数据呢)
成功的话删除TYPE_I列,然后把新添列改名为TYPE_I不过我还是觉得直接修改的"效率"最高呢.呵呵
首先,你自己试试在一张20W行数据的表中直接修改一列或者新增一列看看需要多久。
对待这种问题最好的方法就是重建表,然后再把原来的数据导入进去。
先更改原表的名称,再创建新表,最后导入数据,20W行的数据,用DTS导入估计也就几分钟的事情,但是如果你要直接在原表上修改表结构,你试试看,我估计八成你的机器会当掉,就算运气好能修改成功,那估计也是1千年以后的事情了T_T
这样的做法不错的啊.不知道加上20W行记录是不是就不行了.幽灵brother 有试过吗.我不想当机,也等不了一千年的.
麻烦你告诉我结果就好了.呵呵
-- 测试环境IBM3850,内存8G,CPU:4*2(双核),操作系统:Windows2003 Server Enterprise Edition ,数据库:SQL Server 2000
修改一30+W行的表结构,方法步骤如下:
1.修改原字段A INT----〉varchar
2.新增字段B
3.保存修改
测试结果:
等待中.......
约30分钟后,察看服务器状态,CPU:1%;内存:6+G(设置了AWE,固定为6G)
企业管理器无响应
强制关闭企业管理器
---------------------
以上测试操作均在企业管理器中操作,代码的测试我没有做,我不知道这个修改动作要保存多久
才能成功,我只有等待30分钟的耐心,如果你有兴趣,可以自己试试,也许31分钟的时候会成功,到时记得告诉我结果,谢谢!
你的经历告诉我不能在企业管理器中作直接的类型转换.我说的方法里没有直接修改字段类型的动作的.假设原来的表是这样的tb(id varchar(10),其它字段)
(这些操作也许用代码的方式来做会好点)
1.修改tb表id字段名为iid
2.添加一列,整型,取名叫id
3.把iid的数据更新到id(前提是数据可以转换成功,我想最耗时的是这步)
4.删除iid列