问题描述
关键问题是数据量太大,我想写个脚本按照表中某个字段分成十几张表,但是我试了下在转换10G的数据时就需要很长时间,更不要说50g的数据了。各位有什么好办法没有,指点下。脚本里面我是直接这样写的:select*intoEmailLogfromclientadwheredwTypeID1in(131329,132865,131331,132867)godeletefromclientadwheredwTypeID1in(131329,132865,131331,132867)goselect*intoNetSharefromclientadwheredwTypeID1in(196871,196872)godeleteformclientadwheredwTypeID1in(196871,196872)请大家指点下。
解决方案
解决方案二:
顶
解决方案三:
那也没办法,用你的方法慢慢来。
解决方案四:
欢迎入群讨论:10987609
解决方案五:
SF,建议去SQL板块
解决方案六:
顶,等高手路过。
解决方案七:
INTO子句(Transact-SQL)发送反馈请参阅全部折叠全部展开语言筛选器:全部语言筛选器:多语言语言筛选器:VisualBasic语言筛选器:C#语言筛选器:C++语言筛选器:J#语言筛选器:JScriptVisualBasic(Declaration)C#C++J#JScript创建新表并将来自查询的结果行插入新表中。如果用户执行带INTO子句的SELECT语句,必须在目标数据库中具有CREATETABLE权限。SELECT...INTO不能与COMPUTE一起使用。Transact-SQL语法约定语法[INTOnew_table]参数new_table根据选择列表中的列和WHERE子句选择的行,指定要创建的新表名。new_table的格式通过对选择列表中的表达式进行取值来确定。new_table中的列按选择列表指定的顺序创建。new_table中的每列与选择列表中的相应表达式具有相同的名称、数据类型和值。当选择列表中包括计算列时,新表中的相应列不是计算列。新列中的值是在执行SELECT...INTO时计算出的。包括SELECT...INTO在内的某些大容量操作的日志记录量取决于对数据库有效的恢复模式。有关详细信息,请参阅恢复模式概述。在SQLServer2000之前的版本中,只有设置了selectinto/bulkcopy,才允许使用SELECTINTO创建永久表。不过,在SQLServer2000和更高版本中,selectinto/bulkcopy数据库选项不影响您是否可以使用SELECTINTO创建永久表。此外,在SQLServer2005中,使用selectinto/bulkcopy将导致恢复模式重置为大容量日志记录。如果恢复模式以前是简单恢复模式,将其更改为大容量日志记录会导致日志链中断。因此,应该立即提取数据库备份或差异备份。然后,立即切换回简单恢复模式或切换到完整恢复模式,将定期日志备份添加到您的备份计划。
解决方案八:
没注意看LZ的SQLdwTypeID1是主键吗?
解决方案九:
不要用in最好使用>=AND<=还有不要导入以后就删除,感觉是这里最废时间..导完后使用TRUNCATETABLE[{database_name.[schema_name].|schema_name.}]table_name[;]来清除数据表,非常快..
解决方案十:
是oracle数据库么?是的话恭喜你,oracle数据库本身带这种功能不用你费神了...
解决方案十一:
zhiang75:非常感谢你的提醒,不过我把delete语句删除掉之后,时间好像没有明显的提升。beolee:是sql数据库。
解决方案十二:
用sqlserver自带的dts会更好点
解决方案十三:
DTS吧,就是导入导出,如果硬盘足够大的话.
解决方案十四:
内存多大啊?感觉是内存不够用了...