从SQL Server中导入导出Excel的基本方法
从sql server中导入/导出 excel 的基本方法 /*=========== 导入/导出 excel 的基本方法 ===========*/ 从excel文档中,导入数据到sql数据库中,很简单,直接用下面的语句: /*=============================================*/ --假如接受数据导入的表已存在 insert into 表 select * from openrowset(microsoft.jet.oledb.4.0 ,excel 5.0;hdr=yes;database=c:test.xls,sheet1$)
--假如导入数据并生成表 select * into 表 from openrowset(microsoft.jet.oledb.4.0 ,excel 5.0;hdr=yes;database=c:test.xls,sheet1$)
/*===========================================*/ --假如从sql数据库中,导出数据到excel,假如excel文档已存在,而且已按照要接收的数据创建好表头,就能够简单的用: insert into openrowset(microsoft.jet.oledb.4.0 ,excel 5.0;hdr=yes;database=c:test.xls,sheet1$) select * from 表
--假如excel文档不存在,也能够用bcp来导成类excel的文档,注意大小写: --导出表的情况 exec master..xp_cmdshell bcp 数据库名.dbo.表名 out "c:test.xls" /c -/s"服务器名" /u"用户名" -p"密码"
--导出查询的情况 exec master..xp_cmdshell bcp "select au_fname, au_lname from pubs..authors order by au_lname" queryout "c:test.xls" /c -/s"服务器名" /u"用户名" -p"密码"
/*--说明: c:test.xls 为导入/导出的excel文档名. sheet1$ 为excel文档的工作表名,一般要加上$才能正常使用. --*/ --上面已说过,用bcp导出的是类excel文档,其实质为文本文档,
--要导出真正的excel文档.就用下面的方法 /*--数据导出excel 导出表中的数据到excel,包含字段名,文档为真正的excel文档 ,假如文档不存在,将自动创建文档 ,假如表不存在,将自动创建表 基于通用性考虑,仅支持导出标准数据类型 --邹建 2003.10--*/
/*--调用示例 p_exporttb @tbname=地区资料,@path=c:,@fname=aa.xls --*/ if exists (select * from dbo.sysobjects where id = object_id(n[dbo].[p_exporttb]) and objectproperty(id, nisprocedure) = 1) drop procedure [dbo].[p_exporttb] go
create proc p_exporttb @tbname sysname, --要导出的表名 @path nvarchar(1000), --文档存放目录 @fname nvarchar(250)= --文档名,默认为表名 as declare @err int,@src nvarchar(255),@desc nvarchar(255),@out int declare @obj int,@constr nvarchar(1000),@sql varchar(8000),@fdlist varchar(8000)
--参数检测 if isnull(@fname,)= set @fname=@tbname+.xls
--检查文档是否已存在 if right(@path,1)<> set @path=@path+ create table #tb(a bit,b bit,c bit) set @sql=@path+@fname insert into #tb exec master..xp_fileexist @sql
--数据库创建语句 set @sql=@path+@fname if exists(select 1 from #tb where a=1) set @constr=driver={microsoft excel driver (*.xls)};dsn=;readonly=false +;create_db=" +;database=+@sql+"
--连接数据库 exec @err=sp_oacreate adodb.connection,@obj out if @err<>0 goto lberr
exec @err=sp_oamethod @obj,open,null,@constr if @err<>0 goto lberr
/*--假如覆盖已存在的表,就加上下面的语句 --创建之前先删除表/假如存在的话 select @sql=drop table [+@tbname+] exec @err=sp_oamethod @obj,execute,@out out,@sql --*/
--创建表的sql select @sql=,@fdlist= select @fdlist=@fdlist+,[+a.name+] ,@sql=@sql+,[+a.name+] +case when b.name in(char,nchar,varchar,nvarchar) then text(+cast(case when a.length>255 then 255 else a.length end as varchar)+) when b.name in(tynyint,int,bigint,tinyint) then int when b.name in(smalldatetime,datetime) then datetime when b.name in(money,smallmoney) then money else b.name end from syscolumns a left join systypes b on a.xtype=b.xusertype where b.name not in(image,text,uniqueidentifier,sql_variant,ntext,varbinary,binary,timestamp) and object_id(@tbname)=id select @sql=create table [+@tbname +](+substring(@sql,2,8000)+) ,@fdlist=substring(@fdlist,2,8000) exec @err=sp_oamethod @obj,execute,@out out,@sql if @err<>0 goto lberr
exec @err=sp_oadestroy @obj --导入数据 set @sql=openrowset(microsoft.jet.oledb.4.0,excel 5.0;hdr=yes ;database=+@path+@fname+,[+@tbname+$])
exec(insert into +@sql+(+@fdlist+) select +@fdlist+ from +@tbname) return lberr: exec sp_oageterrorinfo 0,@src out,@desc out lbexit: select cast(@err as varbinary(4)) as 错误号 ,@src as 错误源,@desc as 错误描述 select @sql,@constr,@fdlist go --上面是导表的,下面是导查询语句的.
/*--数据导出excel 导出查询中的数据到excel,包含字段名,文档为真正的excel文档 ,假如文档不存在,将自动创建文档 ,假如表不存在,将自动创建表 基于通用性考虑,仅支持导出标准数据类型 --邹建 2003.10--*/
/*--调用示例 p_exporttb @sqlstr=select * from 地区资料 ,@path=c:,@fname=aa.xls,@sheetname=地区资料 --*/ if exists (select * from dbo.sysobjects where id = object_id(n[dbo].[p_exporttb]) and objectproperty(id, nisprocedure) = 1) drop procedure [dbo].[p_exporttb] go
create proc p_exporttb @sqlstr varchar(8000), --查询语句,假如查询语句中使用了order by ,请加上top 100 percent @path nvarchar(1000), --文档存放目录 @fname nvarchar(250), --文档名 @sheetname varchar(250)= --要创建的工作表名,默认为文档名 as declare @err int,@src nvarchar(255),@desc nvarchar(255),@out int declare @obj int,@constr nvarchar(1000),@sql varchar(8000),@fdlist varchar(8000)
--参数检测 if isnull(@fname,)= set @fname=temp.xls if isnull(@sheetname,)= set @sheetname=replace(@fname,.,#)
--检查文档是否已存在 if right(@path,1)<> set @path=@path+ create table #tb(a bit,b bit,c bit) set @sql=@path+@fname insert into #tb exec master..xp_fileexist @sql
【Sqlserver】查询结果导出excel
【 Sqlserver】查询结果导出 excel
1.右键数据库——》任务——》导出数据,打开SQL Server导入和导出向导; 2.选择当前数据库,填写用户名,密码,下一步; 3.选择目标类型要传输的数据(W),可以直接按W,下一步; 5.写入查询SQL语句,点击分析检测语句,下一步; 6.编辑映射关系,预览效果,下一步; 7.下一步,至完成;
注:这种方式可以解决直接复制查询结果时,如身份证号等长数字字符串,在excel中自动转成数字型,导致显示不正确。
Excel导入SQL Server 2008操作(参考)
如何将Excel导入到SQL Server2008(参考)Excel导入SQL Server是将具有特定格式、特定内容的Excel文档导入到SQL Server,已完成数据对比分析或表数据插入的过程。
Excel版本要求:后缀为.xls的Microsoft Excel 97-2003工作表版本,即office版本为2003或者高版本office另存为.xls格式即可。
应用环境:从别的软件中导出基础信息,如商品分类、供应商档案、商品资料等到Excel中,然后需要导入到方象云专卖软件中时。
流程:从软件中导出Excel文档→发送文档至方象软件专卖事业部进行导入脚本编写→将处理过的Excel导入到SQL Sever2008中,执行脚本导入数据即可。
一、Excel格式设置1.从软件中导出数据的Excel文档从软件中导出的Excel文档,一般是自带格式的,格式一般分为文本和数值型两种。
对于字符型的数字及文字,格式需指定为文本格式。
对于价格、数量等需指定格式为数值型。
2.手动调整Excel格式1)修改对应列名,如商品编码一列可使用英文ProdCode,如图1.2.1所示图1.2.1 对应列名2)Excel文档中,选中某一列数据,点击【数据】→【分列】→”分隔符号”→下一步,如图1.2.2所示以下截图是在Office2010中展示的,其他2003版本需要对应功能查找。
图1.2.2 数据分列3)文本识别符号一处选择’(单引号),下一步,如图1.2.3所示图1.2.3 文本识别符号选择4)列数据格式选择”文本”(若是数值类型,则需选”常规”,右侧的高级按钮可以定义数值分隔符),完成即可,如图1.2.4所示图1.2.4 列数据格式选择二、Excel导入SQL Server2008操作1.进入Microsoft SQL Server Management Studio对象资源管理器,找到要导入的数据库名称,右键→任务→导入数据,如图2.1.1所示图2.1.1 对象资源管理器选择导入数据2.SQL Server导入导出向导中,点击下一步,如图2.2.1所示图2.2.1 SQL Server导入导出向导3.数据源处选择“Microsoft Excel”,文件路径处点击浏览找到之前调整格式的Excel文件,勾选“首行包含列名称”,下一步,如图2.3.1所示图2.3.1 选择数据源4.身份验证处选择“使用SQL Server身份验证”,并输入用户名及密码(sa及sa密码),数据库处选择要导入的数据库名称(即将当前Excel文档以表的形式导入到该数据库中),下一步,如图2.4.1所示图2.4.1 身份验证及数据库选择5.指定表复制或查询,选择“复制一个或多个表或视图的数据”,下一步,如图2.5.1所示图2.5.1 指定表复制或查询6.选择源表和源视图中,在目标一处中,修改表名称,将原来的中的’Sheet 0$’修改为要导入的表名称,如商品表可起名为productw(注:不可与数据库中原表名称冲突),下一步,如图2.6.1所示图2.6.1 选择源表和源视图7.保存并运行包,勾选“立即运行”,下一步,如图2.7.1所示图2.7.1 保存并运行包8.完成该向导,点击【完成】即可。
sqlserversql语句导入数据到execl2007中
sqlserversql语句导⼊数据到execl2007中insert into OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=C:\c.xlsx','select 字段1,字段2 FROM [sheet1$]')select 字段1,字段2 from table今天单位⼀⽹站,⾥⾯有个功能是导出数据,发现⼀导出就报错,报错内容是:SQL Server 阻⽌了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的⼀部分⽽被关闭。
系统管理员可以通过使⽤ sp_configure 启⽤ 'Ad Hoc Distributed Queries'。
有关启⽤ 'Ad Hoc Distributed Queries' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应⽤配置器"。
看错误提⽰就知道是因为SQL Server的Ad Hoc Distributed Queries组件被禁⽤了,这⾥我⽤的SQL Server版本是2005,只需要开启Ad Hoc Distributed Queries就可以了,⽅法如下:1.开启Ad Hoc Distributed Queries组件,在sql查询编辑器中执⾏如下语句:exec sp_configure 'show advanced options',1reconfigureexec sp_configure 'Ad Hoc Distributed Queries',1reconfigure2.关闭Ad Hoc Distributed Queries组件,在sql查询编辑器中执⾏如下语句:exec sp_configure 'Ad Hoc Distributed Queries',0reconfigureexec sp_configure 'show advanced options',0reconfigure。
SqlServer2008如何将数据表导出Excel文件?
SqlServer2008如何将数据表导出Excel⽂件?
1、⾸先在测试数据库中创建要导出Excel的数据
--创建⼀个民族表--
create table BdsNation(
Uid int not null,
Code varchar(10) not null,
Name varchar(20) not null,
Notes varchar(59) null
)
--插⼊数据
insert into BdsNation(Uid,Code,Name,NOtes)
values(1,'001','汉族','汉族123');
insert into BdsNation(Uid,Code,Name,NOtes)
values(2,'002','满族','满族123');
--查询数据--
select*from BdsNation;
2、导出数据的操作步骤
1)右键数据库,选择任务-->导出数据
2)选择数据源,默认Sql Server版本,默认导出数据库,点击下⼀步
3)选择导出⽬标,选择Microsoft Excel,选择要导出Excel路径,点击下⼀步
4)指定表复制或查询,第⼀种复制⼀个表数据,第⼆种可根据查询复制数据
5)选择源表和源视图,选择导出数据表,点击下⼀步
6)查看数据类型映射,点击下⼀步
7)保存并运⾏包,点击完成
8)点击完成,出现执⾏成功
3、导出后,打开Excel⽂件,查看结果。
向SQL server2005中导入excel数据
向SQL server 2005中导入excel数据:1、使用命令行,(数据库中缺少ssis):起因:项目中Excel 数据要导入到数据库中。
操作:1、开启OPENROWSET 和 OPENDATASOURCE 功能。
方式1:开始 -> 程序 -> Microsoft SQL Server 2005 -> 配置工具 -> 外围应用配置 -> [选择计算机 - 选择“使用中的服务器”所在的计算机 - 功能的外围应用配置器 - 选中复制框“启用 OPENROWSET 和 OPENDATASOURCE 支持” - 应用]本机中的使用方式:开始 -> 程序 -> Microsoft SQL Server 2005 -> 配置工具 -> SQL Server外围应用配置器 -> 功能的外围应用配置器 -> 选中复制框“启用 OPENROWSET 和OPENDATASOURCE 支持” -> 应用2、进入查询界面:(即打开数据库)方式1:开始 -> 程序 -> Microsoft SQL Server 2005 -> SQL Server Management Studio[连接对象资源管理器 - 连接“使用中的服务器” - 数据库 - 打开“使用的数据库” - 新建查询 - 执行“导入语句” ]3、步骤2中的导入语句如下:Insert TestXls --注:此为已存在的表,即为目的SELECT * --注:此应据实际需要写上具体字段FROM --注:此为Excel文件,即为来源OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','Data Source=F:\WebsiteProject\StaffInfo.xls;Extended Properties=Excel 8.0')...[T$]/*已测试通过*/SELECT * into newtable --注:目的表,此为不存在的表,如果存在则会提示:消息2714,级别16,状态6,第1 行数据库中已存在名为'newtable的对象。
sql server 2008 导入导出数据大全
sql server 2008 导入导出数据大全/******* 导出到excelEXEC master..xp_cmdshell 'bcp SettleDB.dbo.shanghu out c:\temp1.xls -c -q - S"GNETDATA/GNETDATA" -U"sa" -P""'/*********** 导入ExcelSELECT *FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel5.0')...xactions/*动态文件名declare @fn varchar(20),@s varchar(1000)set @fn = 'c:\test.xls'set @s ='''Microsoft.Jet.OLEDB.4.0'',''Data Source="'+@fn+'";User ID=Admin;Password=;Extended properties=Excel 5.0'''set @s = 'SELECT * FROM OpenDataSource ('+@s+')...sheet1$'exec(@s)*/SELECT cast(cast(科目编号as numeric(10,2)) as nvarchar(255))+'' 转换后的别名FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel5.0')...xactions/********************** EXCEL导到远程SQLinsert OPENDATASOURCE('SQLOLEDB','Data Source=远程ip;User ID=sa;Password=密码').库名.dbo.表名(列名1,列名2)SELECT 列名1,列名2FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel5.0')...xactions/** 导入文本文件EXEC master..xp_cmdshell 'bcp dbname..tablename in c:\DT.txt -c -Sservername -Usa - Ppassword'/** 导出文本文件EXEC master..xp_cmdshell 'bcp dbname..tablename out c:\DT.txt -c -Sservername -Usa -Ppassword'或EXEC master..xp_cmdshell 'bcp "Select * from dbname..tablename" queryout c:\DT.txt -c - Sservername -Usa -Ppassword'导出到TXT文本,用逗号分开exec master..xp_cmdshell 'bcp "库名..表名" out "d:\tt.txt" -c -t ,-U sa -P password'BULK INSERT 库名..表名FROM 'c:\test.txt'WITH (FIELDTERMINATOR = ';',ROWTERMINATOR = '\n')--/* dBase IV文件select * fromOPENROWSET('MICROSOFT.JET.OLEDB.4.0','dBase IV;HDR=NO;IMEX=2;DATABASE=C:\','select * from [客户资料4.dbf]')--*/--/* dBase III文件select * fromOPENROWSET('MICROSOFT.JET.OLEDB.4.0','dBase III;HDR=NO;IMEX=2;DATABASE=C:\','select * from [客户资料3.dbf]')--*/--/* FoxPro 数据库select * from openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:\','select * from [aa.DBF]')--*//**************导入DBF文件****************/select * from openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceDB=e:\VFP98\data;SourceType=DBF','select * from customer where country != "USA" order by country')go/***************** 导出到DBF ***************/如果要导出数据到已经生成结构(即现存的)FOXPRO表中,可以直接用下面的SQL语句insert into openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:\','select * from [aa.DBF]')select * from 表说明:SourceDB=c:\ 指定foxpro表所在的文件夹aa.DBF 指定foxpro表的文件名./*************导出到Access********************/insert into openrowset('Microsoft.Jet.OLEDB.4.0','x:\A.mdb';'admin';'',A表) select * from 数据库名..B表/*************导入Access********************/insert into B表selet * from openrowset('Microsoft.Jet.OLEDB.4.0','x:\A.mdb';'admin';'',A表)文件名为参数declare @fname varchar(20)set @fname = 'd:\test.mdb'exec('SELECT a.* FROM opendatasource(''Microsoft.Jet.OLEDB.4.0'', '''+@fname+''';''admin'';'''', topics) as a ')SELECT *FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="f:\northwind.mdb";Jet OLEDB:Database Password=123;UserID=Admin;Password=;')...产品********************* 导入xml文件DECLARE @idoc intDECLARE @doc varchar(1000)--sample XML documentSET @doc ='<root><Customer cid= "C1" name="Janine" city="Issaquah"><Order oid="O1" date="1/20/1996" amount="3.5" /><Order oid="O2" date="4/30/1997" amount="13.4">Customer was very satisfied </Order></Customer><Customer cid="C2" name="Ursula" city="Oelde" ><Order oid="O3" date="7/14/1999" amount="100" note="Wrap it bluewhite red"><Urgency>Important</Urgency>Happy Customer.</Order><Order oid="O4" date="1/20/1996" amount="10000"/></Customer></root>'-- Create an internal representation of the XML document.EXEC sp_xml_preparedocument @idoc OUTPUT, @doc-- Execute a SELECT statement using OPENXML rowset provider.SELECT *FROM OPENXML (@idoc, '/root/Customer/Order', 1)WITH (oid char(5),amount float,comment ntext 'text()')EXEC sp_xml_removedocument @idoc/**********************Excel导到Txt****************************************/想用select * into opendatasource(...) from opendatasource(...)实现将一个Excel文件内容导入到一个文本文件假设Excel中有两列,第一列为姓名,第二列为很行帐号(16位)且银行帐号导出到文本文件后分两部分,前8位和后8位分开。
[SQL]将Excel表数据导入SQL Server2005的几种方法归纳
[SQL]将Excel表数据导入SQL Server2005的几种方法归纳近日在巨轮着手车间负荷数据处理,反馈回来的数据是保存在Excel文件中的,我必须将其导入SQL Server2005中,供存储过程计算。
由于之前没有将Excel数据导入SQL Server2005的经验,因此摸索着花了一天时间才搞定。
下面将网上收集到的几种导入方法做个归纳。
方法一、利用SQL Server2005自带的DTS工具,手工导入:第一步是点击开始并选择运行并输入CMD然后在命令提示符里输入DTSWIZARD。
SQL Server 导入和导出向导的欢迎界面将显示出来,如下图所示:(也可以这样打开该界面:1、登录到 SQL Server Management Studio。
2、在“对象资源管理器”中右键单击“管理”,在弹出列表中单击“导入数据”。
)当你点击下一步按钮时,它将进入选择数据源向导界面。
用户应该选择数据源为Microsoft Office 12.0 Access Database Engine OLE DB Provider 然后在向导界面中点击属性…按钮,它将弹出数据链接属性界面。
在所有标签页中,双击数据源属性值并输入电子数据表的位置,例如“C:\Excel2007\Import\SampleData.xlsx”作为导入数据的数据源的Microsoft Office Excel 2007文件名称和路径。
然后双击扩展属性并选择Excel 12.0作为属性值。
到Microsoft Office Excel 2007的连接可以通过点击测试连接按钮来进行测试,如下图所示:在下一个页面中,数据源需要选为SQL Native Client,因为数据将导入到SQL Server 2005。
然后你需要选择数据所要导入的服务器名称,并需要配置合适的验证模式,它之后跟着数据库名称。
在这个例子中,我们将使用windows验证连接到本地SQL Server实例,所使用的数据库将是ImportExcel。
sql server导数据表的方法
一、背景介绍SQL Server 是一款由微软公司开发的关系型数据库管理系统,广泛应用于企业级应用程序和数据存储中。
在数据库管理中,经常需要将数据表导出或导入到不同的数据库中,以便进行数据分析、备份恢复或数据迁移等操作。
掌握 SQL Server 导数据表的方法对于数据库管理人员和开发人员来说非常重要。
二、使用 INSERT INTO 语句导出数据表1. 连接至目标数据库首先需要使用 SQL Server Management Studio(SSMS)或者其他数据库管理工具连接至目标数据库。
2. 编写 INSERT INTO 语句可以使用以下语法将数据表的内容导出到另一个数据库中:```sqlINSERT INTO 目标数据库.目标模式.目标表SELECT * FROM 源数据库.源模式.源表;```其中,目标数据库为要导入数据的数据库名称,目标模式为目标表所在的模式名称,目标表为要导入数据的表名称;源数据库、源模式和源表分别为原始数据表所在的数据库名称、模式名称和表名称。
3. 执行 INSERT INTO 语句在 SSMS 或者其他数据库管理工具中执行编写好的 INSERT INTO 语句,即可将源数据表的内容导入到目标数据库中的目标表中。
三、使用 BULK INSERT 命令导出数据表1. 准备数据文件首先需要将源数据表的内容导出到一个数据文件中,可以使用 SQL Server 提供的 bcp 命令或者其他数据导出工具。
2. 编写 BULK INSERT 命令可以使用以下语法将数据文件中的内容导入到目标数据库的目标表中:```sqlBULK INSERT 目标数据库.目标模式.目标表FROM '数据文件路径'WITH(FIELDTERMINATOR = ',',ROWTERMINATOR = '\n',CODEPAGE = 'ACP');```其中,目标数据库、目标模式和目标表分别为要导入数据的数据库名称、模式名称和表名称;数据文件路径为数据文件所在的路径;FIELDTERMINATOR 为字段分隔符,ROWTERMINATOR 为行分隔符,CODEPAGE 为数据文件的编码方式。
将SQLServer结果导出为excel文件
相信大家常常会遇到将SqlServer查询结果导出到Excel的问题。
如果导出的次数少,直接“Save Results As...”就是了;但是当要分别在每个表取样,那就相当麻烦了。
今天就为大家提供一个脱离office组件的可以将语句结果导出到Excel的过程,希望会对大家有帮助!---导出到Excel---使用说明:-- 1.执行时所连接的服务器决定文件存放在哪个服务器-- 2.远程查询语句中,要加上数据库名ALTER PROC ExportFile@QuerySql V ARCHAR(max),@Server V ARCHAR(20),@User V ARCHAR(20),@Password V ARCHAR(20),@FilePath NV ARCHAR(100) = 'c:ExportFile.xls'ASDECLARE @tmp V ARCHAR(50) = '[##Table' + CONVERT(V ARCHAR(36),NEWID())+']' BEGIN TRYDECLARE @Sql V ARCHAR(max),@DataSource V ARCHAR(max)='';--判断是否为远程服务器IF @Server <> '.' AND @Server <> '127.0.0.1'SET @DataSource = 'OPENDA TASOURCE(''SQLOLEDB'',''Data--将结果集导出到指定的数据库SET @Sql = REPLACE(@QuerySql,' from ',' into + ' from ' + @DataSource)PRINT @SqlEXEC(@Sql)DECLARE @Columns V ARCHAR(max) = '',@Data NV ARCHAR(max)=''SELECT @Columns = @Columns + ',''' + name +''''--获取列名(xp_cmdshell导出文件没有列名),@Data = @Data + ',Convert(Nvarchar,[' + name +'])'--将结果集所在的字段更新为nvarchar(避免在列名和数据union的时候类型冲突)FROM tempdb.sys.columns WHERE object_id = OBJECT_ID()SELECT @Data = 'SELECT ' + SUBSTRING(@Data,2,LEN(@Data)) + ' FROM ' + @tmp SELECT @Columns = 'Select ' + SUBSTRING(@Columns,2,LEN(@Columns))--使用xp_cmdshell的bcp命令将数据导出EXEC sp_configure 'xp_cmdshell',1RECONFIGUREDECLARE @cmd NV ARCHAR(4000) = 'bcp "' + @Columns+' Union All ' + @Data+'" queryout ' + @FilePath + ' -c -T'PRINT @cmdexec sys.xp_cmdshell @cmdEXEC sp_configure 'xp_cmdshell',0RECONFIGUREEXEC('DROP TABLE ' + @tmp)END TRYBEGIN CATCH--处理异常IF OBJECT_ID() IS NOT NULL EXEC('DROP TABLE ' + @tmp) EXEC sp_configure 'xp_cmdshell',0RECONFIGURESELECT ERROR_MESSAGE() END CATCH更多信息请查看IT技术专栏。
SQLserver导入导出手动教程(不使用查询语句)
导出:
新建一个excel文件,在工具栏上方选择数据
点击自其他来源
出现以下窗口,服务器名可以在你的SQL的登录窗口看到
填好后,点下一步,选择数据库和表
直接点击完成,出现
直接确定就完成了导出。
导入:
打开SQLserver,对你要导入的数据库点右键,选择任务,导入数据
出现以下窗口
选择数据源:选为EXCEL,出现
选择文件路径后点击下一步
继续下一步,下一步,到
选择你的数据所在列,注意是带有$号的,同时点击下方的编辑映射
可以修改导入后的字段的类型,相当于数据库建表,注意选择类型和你导入的数据要吻合然后确定后,点击下一步
无视黄色感叹号,下一步
直接点击完成
继续完成
OK
回去刷新一下数据库,就可以看到你建的表了。
