如何将sqlserver表中的数据导出sql语句或生成insert into语句 [转]

输入表名,生成插入语句

drop proc proc_insert //如果存在就删除
go
create proc proc_insert (@tablename varchar(256))
as
begin
set nocount on
declare @sqlstr varchar(4000)
declare @sqlstr1 varchar(4000)
declare @sqlstr2 varchar(4000)
select @sqlstr=‘select ‘‘insert ‘[email protected]
select @sqlstr1=‘‘
select @sqlstr2=‘ (‘
select @sqlstr1= ‘ values ( ‘‘+‘
select @[email protected]+col+‘+‘‘,‘‘+‘ ,@[email protected]+name +‘,‘ from (select case 
-- when a.xtype =173 then ‘case when ‘+a.name+‘ is null then ‘‘NULL‘‘
else ‘+‘convert(varchar(‘+convert(varchar(4),a.length*2+2)+‘),‘+a.name
+‘)‘+‘ end‘
when a.xtype =127 then ‘case when ‘+a.name+‘ is null then ‘‘NULL‘‘ else ‘+‘convert(varchar(20),‘+a.name +‘)‘+‘ end‘
when a.xtype =104 then ‘case when ‘+a.name+‘ is null then ‘‘NULL‘‘ else ‘+‘convert(varchar(1),‘+a.name +‘)‘+‘ end‘
when a.xtype =175 then ‘case when ‘+a.name+‘ is null then ‘‘NULL‘‘ else
‘+‘‘‘‘‘‘‘‘‘+‘+‘replace(‘+a.name+‘,‘‘‘‘‘‘‘‘,‘‘‘‘‘‘‘‘‘‘‘‘)‘ +
‘+‘‘‘‘‘‘‘‘‘+‘ end‘
when a.xtype =61 then ‘case when ‘+a.name+‘ is null then ‘‘NULL‘‘ else
‘+‘‘‘‘‘‘‘‘‘+‘+‘convert(varchar(23),‘+a.name +‘,121)‘+ ‘+‘‘‘‘‘‘‘‘‘+‘ end‘
when a.xtype =106 then ‘case when ‘+a.name+‘ is null then ‘‘NULL‘‘ else
‘+‘convert(varchar(‘+convert(varchar(4),a.xprec+2)+‘),‘+a.name +‘)‘+‘
end‘
when a.xtype =62 then ‘case when ‘+a.name+‘ is null then ‘‘NULL‘‘ else ‘+‘convert(varchar(23),‘+a.name +‘,2)‘+‘ end‘
when a.xtype =56 then ‘case when ‘+a.name+‘ is null then ‘‘NULL‘‘ else ‘+‘convert(varchar(11),‘+a.name +‘)‘+‘ end‘
when a.xtype =60 then ‘case when ‘+a.name+‘ is null then ‘‘NULL‘‘ else ‘+‘convert(varchar(22),‘+a.name +‘)‘+‘ end‘
when a.xtype =239 then ‘case when ‘+a.name+‘ is null then ‘‘NULL‘‘ else
‘+‘‘‘‘‘‘‘‘‘+‘+‘replace(‘+a.name+‘,‘‘‘‘‘‘‘‘,‘‘‘‘‘‘‘‘‘‘‘‘)‘ +
‘+‘‘‘‘‘‘‘‘‘+‘ end‘
when a.xtype =108 then ‘case when ‘+a.name+‘ is null then ‘‘NULL‘‘ else
‘+‘convert(varchar(‘+convert(varchar(4),a.xprec+2)+‘),‘+a.name +‘)‘+‘
end‘
when a.xtype =231 then ‘case when ‘+a.name+‘ is null then ‘‘NULL‘‘ else
‘+‘‘‘‘‘‘‘‘‘+‘+‘replace(‘+a.name+‘,‘‘‘‘‘‘‘‘,‘‘‘‘‘‘‘‘‘‘‘‘)‘ +
‘+‘‘‘‘‘‘‘‘‘+‘ end‘
when a.xtype =59 then ‘case when ‘+a.name+‘ is null then ‘‘NULL‘‘ else ‘+‘convert(varchar(23),‘+a.name +‘,2)‘+‘ end‘
when a.xtype =58 then ‘case when ‘+a.name+‘ is null then ‘‘NULL‘‘ else
‘+‘‘‘‘‘‘‘‘‘+‘+‘convert(varchar(23),‘+a.name +‘,121)‘+ ‘+‘‘‘‘‘‘‘‘‘+‘ end‘
when a.xtype =52 then ‘case when ‘+a.name+‘ is null then ‘‘NULL‘‘ else ‘+‘convert(varchar(12),‘+a.name +‘)‘+‘ end‘
when a.xtype =122 then ‘case when ‘+a.name+‘ is null then ‘‘NULL‘‘ else ‘+‘convert(varchar(22),‘+a.name +‘)‘+‘ end‘
when a.xtype =48 then ‘case when ‘+a.name+‘ is null then ‘‘NULL‘‘ else ‘+‘convert(varchar(6),‘+a.name +‘)‘+‘ end‘
-- when a.xtype =165 then ‘case when ‘+a.name+‘ is null then ‘‘NULL‘‘
else ‘+‘convert(varchar(‘+convert(varchar(4),a.length*2+2)+‘),‘+a.name
+‘)‘+‘ end‘
when a.xtype =167 then ‘case when ‘+a.name+‘ is null then ‘‘NULL‘‘ else
‘+‘‘‘‘‘‘‘‘‘+‘+‘replace(‘+a.name+‘,‘‘‘‘‘‘‘‘,‘‘‘‘‘‘‘‘‘‘‘‘)‘ +
‘+‘‘‘‘‘‘‘‘‘+‘ end‘
else ‘‘‘NULL‘‘‘
end as col,a.colid,a.name
from syscolumns a where a.id = object_id(@tablename) and a.xtype
<>189 and a.xtype <>34 and a.xtype <>35 and a.xtype
<>36
)t order by colid

select @[email protected]+left(@sqlstr2,len(@sqlstr2)-1)+‘) ‘+left(@sqlstr1,len(@sqlstr1)-3)+‘)‘‘ from ‘[email protected]
-- print @sqlstr
exec( @sqlstr)
set nocount off
end
go

select * from systypes

使用方法:

exec proc_insert 你的表名

选择【执行模式】为“以文本显示结果”,然后将运行后的结果存成.sql,加上用SQL Server生成的数据库脚本就可以了。


外可以利用第三方工具,导出饮食备注型字段的数据数据可以用powerbuilder。在database
painter里面,用SQL选出,或者直接打开表,点击生成的list datawindow,然后在菜单file->save rows
as->选择SQL,那么生成的SQL语句就包括建表和insert数据的SQL了。

还有最完善的方式就是自己编程实现导入导出,这样可以应对所有情况的数据转换。

时间: 2025-02-01 01:00:42

如何将sqlserver表中的数据导出sql语句或生成insert into语句 [转]的相关文章

java实现将oracle表中的数据导出到excel表里

1.数据库连接类:Dbutil package sql2excel; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; public class Dbutil { /* * 功能

MSSQL中把表中的数据导出成Insert

use master go if exists (select name from sysobjects where name = 'sp_generate_insert_script') begin drop proc sp_generate_insert_script print 'old version of sp_generate_insert_script dropped' end go create procedure sp_generate_insert_script @table

查询和删除数据表中重复数据的sql

1.查询表中重复数据.select * from people where peopleId in (select   peopleId   from   people   group   by   peopleId   having   count(peopleId) > 1) 2.删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录 delete from people where peopleId   in (select   peopleI

Python脚本---把MySQL数据库表中的数据导出生成csv格式文件

转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/45841221 #!/usr/bin/env python # -*- coding:utf-8 -*- """  Purpose: 生成日汇总对账文件  Created: 2015/4/27  Modified:2015/5/1  @author: guoyJoe""" #导入模块import MySQLdbimport timeimpo

Qt中将QTableView中的数据导出为Excel文件

如果你在做一个报表类的程序,可能将内容导出为Excel文件是一项必须的功能.之前使用MFC的时候我就写过一个类,用于将grid中的数据导出为Excel文件.在使用了QtSql模块后,我很容易的将这个类改写应用在Qt程序中.类的名字叫“ExportExcelObject”.使用起来很简单: [cpp] view plaincopy // 1. declare an object // – fileName Excel 文件路径 // – sheetName Excel 工作表(sheet)名称 /

使用OpenXml把Excel中的数据导出到DataSet中

public class OpenXmlHelper { /// <summary> /// 读取Excel数据到DataSet中,默认读取所有Sheet中的数据 /// </summary> /// <param name="filePath">Excel文件路径</param> /// <param name="sheetNames">Sheet名称列表,默认为null查询所有Sheet中的数据<

SqlServer表和excel数据批量复制方法

SqlServer表和excel数据批量复制方法 一.SqlServer表数据复制到excel方法: 1.新建查询,用sql语句把表数据读出来 2.然后,选择数据,右键"复制"(如果需要表字段名称,则点击连同标题复制) 3.在excel中直接粘贴就好了. 二.excel复制到SqlServer表数据方法1: 1.打开excel复制数据. 2.用编辑状态打开sql表 3.右键点击表最下面一行左侧的序号,选择粘贴(注意:excel的列一定要和sql表的列对应) 4.如果有自增,不要复制自增

机房收费系统之vb中的MSFlexGrid控件中的数据导出为Excel的步骤

MSFlexGrid控件中的数据导出为Excel表格的方法有很多,我觉得它们都大同小异,总起来说就是vb先调用Excel,然后再将数据导入进去.在数据导出的过程中,我的收获如下,下面是我把MSFlexGrid控件的数据导出到Excel中的步骤. 1 首先确保 在工程中引用Microsoft Excel 14.0 Object Library   和  Microsoft ActiveX Data Objects 2.6 Libray 代码部分, <span style="font-size

[转]mysql 从一个表中查数据并插入另一个表实现方法

不管是在网站开发还是在应用程序开发中,我们经常会碰到需要将MySQL或MS SQLServer某个表的数据批量导入到另一个表的情况,甚至有时还需要指定导入字段. 本文就将以MySQL数据库为例,介绍如何通过SQL命令行将某个表的所有数据或指定字段的数据,导入到目标表 中.此方法对于SQLServer数据库,也就是T-SQL来说,同样适用 . 类别一. 如果两张张表(导出表和目标表)的字段一致,并且希望插入全部数据,可以用这种方法: INSERT INTO 目标表 SELECT * FROM 来源