+ -
当前位置:首页 → 问答吧 → 忽然起了一个念头,欢迎大家一起想想

忽然起了一个念头,欢迎大家一起想想

时间:2010-08-18

来源:互联网

这两天在整理一份系统安装脚本。
里面整理数据库预装数据的脚本的时候一个个表用PB从数据库里select * from ...然后再save rows as ... sql这样存成sql文件,这样整理上千个表真是苦不堪言。
忽然想到,能否用t-sql写一个过程将表的数据转成insert tablename values(....)的格式吗?

想了一下,动态链接表名和字段名和抽取字段类型不难,难的是字符串类型,如何抽取其中转义字符,例如 '和" 以及tab和回车符等,还有一个datetime类型的怎么转存,还真想不出来。

欢迎大家一起想一想。

作者: Eisen   发布时间: 2010-08-18

想法很不错。 宣称很强大的sqlserver2005,如果不用第三方工具,即使management studio 2005都不能导出insert 语句。 虽然management studio2008实现了。

作者: andkylee   发布时间: 2010-08-18

本帖最后由 andkylee 于 2010-08-18 16:22 编辑

select_column_list='insert into table_name(col1,col2,col3,...coln) values(' + convert(varchar,ID)
select_column_list=select_column_list+',"'+name+'"'
select_column_list=select_column_list+',"'+convert(varchar,birthday,120)+'"'
.......
select_column_list=select_column_list+lastcolumn

以上有过程处理。

然后
execute select "select "+ select_column_list + "from tablea_name" from table_name

作者: andkylee   发布时间: 2010-08-18