从SQL Server中导入导出Excel的基本方法
- 格式:doc
- 大小:42.00 KB
- 文档页数:6
如何将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中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⽂件?
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 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 导入导出数据大全/******* 导出到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的几种方法归纳近日在巨轮着手车间负荷数据处理,反馈回来的数据是保存在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 导数据表的方法对于数据库管理人员和开发人员来说非常重要。
二、使用 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的问题。
如果导出的次数少,直接“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技术专栏。
导出:
新建一个excel文件,在工具栏上方选择数据
点击自其他来源
出现以下窗口,服务器名可以在你的SQL的登录窗口看到
填好后,点下一步,选择数据库和表
直接点击完成,出现
直接确定就完成了导出。
导入:
打开SQLserver,对你要导入的数据库点右键,选择任务,导入数据
出现以下窗口
选择数据源:选为EXCEL,出现
选择文件路径后点击下一步
继续下一步,下一步,到
选择你的数据所在列,注意是带有$号的,同时点击下方的编辑映射
可以修改导入后的字段的类型,相当于数据库建表,注意选择类型和你导入的数据要吻合然后确定后,点击下一步
无视黄色感叹号,下一步
直接点击完成
继续完成
OK
回去刷新一下数据库,就可以看到你建的表了。
在sql server中迁移数据的几种方法-回复在SQL Server中迁移数据的几种方法数据迁移在数据库管理中是一个常见的任务,无论是因为升级服务器、合并数据库、迁移到云端还是备份恢复等原因,我们都需要将数据从一个数据库迁移到另一个数据库中。
在SQL Server中,有几种方法可以实现数据迁移,本文将逐步回答如何使用不同的方法来迁移数据。
一、使用SQL Server Management Studio(SSMS)SQL Server Management Studio(SSMS)是微软为SQL Server提供的管理工具,它具有强大的功能,包括数据迁移。
以下是使用SSMS迁移数据的步骤:1. 打开SQL Server Management Studio,连接到源数据库和目标数据库。
2. 在对象资源管理器中,展开源数据库和目标数据库所在的服务器。
3. 右键单击源数据库,选择“任务”-> “导出数据”选项。
4. 在导出数据向导中,按照向导的步骤进行设置,包括选择数据源、选择目标数据库、选择要迁移的表和视图等。
5. 完成向导后,SSMS会自动生成T-SQL脚本来执行数据迁移。
点击“完成”按钮,将开始执行数据迁移操作。
使用SSMS迁移数据的优点是操作简单,适用于小规模的数据库迁移任务。
然而,对于大规模的数据库和复杂的迁移需求,可能需要使用其他方法。
二、使用SQL Server Integration Services(SSIS)SQL Server Integration Services(SSIS)是SQL Server提供的一个功能强大的ETL(Extract, Transform and Load)工具,适用于数据仓库和大规模数据迁移等复杂的数据处理任务。
以下是使用SSIS迁移数据的步骤:1. 打开SQL Server Data Tools(SSDT),创建一个新的Integration Services项目。
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=;Extendedproperties=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=;Extendedproperties=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=;Extendedproperties=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=;Extendedproperties=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;User ID=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 blue white 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位分开。
SQLserver数据库导出为Excel数据的方法
社保用友R9.7财务软件后台数据库存为SQLserver数据库,首先利用SQLserver还原数据,并将数据转换为EXCEL 格式文件,再利用AO采集数据库的方式采集数据生成帐表。
数据库存中导出的表为:
1、凭证表:GL-pznr
凭证表导出为EXCEL表后,将各月日期字段值进行修改。
如:200701的值替换为:2007-1-31类型的日期值,各月依次类推。
同时将2008年发生的业务记录全部清除。
2、余额表:GL-kmxx
3、科目表:GL-yeb
操作方法:
1、新建一个Excel表。
2、利用SQLserver还原用友数据库并将其导出为Excel数据
表。
第一步:在还原后的数据库中点右键—所有任务—导出数据
第二步:出现“TDS导入/导出”界面选---下一步
第三步:不作修改选---下一步
第四步:1、在“目的”选项中选“Microsoft Excel 97-2000”
2、在“文件名”选项中选新建的Excel文件“07社保财务数据(用友R9.7).xls”
3、选---下一步
第五步:选下一步
第六步:
1、选择----凭证表:GL-pznr 并在目的名中换名为:凭证表
2、选择----凭证表:GL-yeb 并在目的名中换名为:余额表
3、选择----凭证表:GL-kmxx 并在目的名中换名为:科目表
4、选---下一步
、
第七步:选----下一步
第八步:选---完成。
在sql server中迁移数据的几种方法在SQL Server中迁移数据有多种方法,包括备份和还原、复制和复制、SQL Server Integration Services(SSIS)等。
下面将详细介绍每种方法。
1.备份和还原:备份和还原是一种常用的数据迁移方法。
它通过将源数据库的备份文件转移到目标服务器,然后使用还原操作将备份文件恢复到目标数据库中。
这种方法适用于小型数据库的迁移,它简单而且效率较高。
但是,由于备份和还原是整个数据库级别的迁移方法,所以在迁移大型数据库时可能需要一段时间来进行备份和还原操作,因此不适合快速迁移大量数据的场景。
2.复制和复制:复制和复制是一种常用的数据迁移方法,适用于需要实时或定期将数据从一个数据库复制到另一个数据库的场景。
它通过在源数据库和目标数据库之间建立一个复制链来实现数据的迁移。
复制和复制可以使用SQL Server自带的事务复制(transactional replication)或快照复制(snapshot replication)来进行数据迁移。
事务复制是一种持续复制的方法,可以保持源数据库和目标数据库之间的数据同步。
快照复制则是一种定期复制的方法,每次复制都会生成一个目标数据库的快照。
根据数据迁移的需求,可以选择适用的复制方法。
3. SQL Server Integration Services(SSIS):SQL Server Integration Services(SSIS)是SQL Server中的一种强大的ETL(Extract, Transform, Load)工具。
它可以帮助用户进行复杂的数据迁移和转换操作。
SSIS具有丰富的数据流转换和任务控件,可以从多个数据源抽取数据,进行不同的转换操作,然后将数据加载到目标数据库中。
SSIS可以通过可视化的设计界面来创建数据迁移的工作流程,也可以使用SSIS的脚本任务来编写自定义的数据迁移逻辑。
sqlserver数据的导入导出命令sql server 数据的导入导出命令一、将.dbf(foxpro数据文件)导入到sql server中:-------------如果接受导入数据的SQL表不存在,导入时创建select * into 要生成的SQL表名 from openrowset('MSDASQL','Driver=Microsoft Visual F oxPro Driver;SourceType=DBF;SourceDB=c:\','select * from dbf表名.DBF')实例:--导入mdf数据文件select * into t_tdd from openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=d:\我的文档\桌面\宁夏第一次数据','select * from [t_tdd.DBF]')在执行命令前,要下载了一个microsoft ole db provider for visual foxpro安装,可以了。
在使用该命令时,有时会出现如下错误提示:SQL Server 阻止了对组件'Ad Hoc Distributed Queries' 的STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。
系统管理员可以通过使用 sp_configure 启用 'Ad Hoc Distributed Queries'。
有关启用 'Ad Hoc Distributed Queries' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。
SqlServer导⼊Excel
1、准备Excel⽂件,确保⾸⾏包含列名称,⽰例列名⽤了中⽂,英⽂也可以
2、如果安装了Sql Server Management Studio的话,直接在数据库Application右键->任务->导⼊数据,启动SQL Server 2016 导⼊和导出向导(32 位)
注:Sql Server Management Studio⾥默认启动32位的程序
3、选择导⼊的源
如果点Next出现
两种⽅法:
⼀、把excel⽂件另存为xls的格式,选择97-2003导⼊
这种导⼊列数据会⽐较容易识别为double,导致数据丢失,如:前⼏⾏都是数字“123456789”,然后来⼀个⽂本“123456或456789”,那么这⼀样的数据就导不进去,丢了需要额外操作excel⽂件:
修改为⽂本,这⼀列导⼊时才会被识别为nvarchar
根据安装的Microsoft Office是32还是64位的,选择下载对应的程序
以下演⽰为64位的,不能从Sql Server Management Studio⾥启动,要去启动这个(也可以在开始菜单中找到)
C:\Program Files\Microsoft SQL Server\130\DTS\Binn\DTSWizard.exe
4、选择导⼊的⽬标
5、选择“复制⼀个或多个表或视图的数据”
6、⽬标可以写⼀个不存在的表,以免去⼿⼯创建表的⿇烦
注:选择Sheet1是因为Excel⽂件中,只有Sheet1有数据
7、然后⼀直下⼀步直⾄完成,很多默认的选择是不⽤改的
可以查询到刚才插⼊的数据则表⽰成功插⼊数据。
SQL Server批量导出表数据的方法在SQL Server数据库中,有时我们需要将表数据导出为不同的文件格式,如CSV、Excel等。
本文将介绍几种常用的方法,来实现SQL Server批量导出表数据的功能。
1. 使用BCP命令导出数据BCP(Bulk Copy Program)是SQL Server自带的一个命令行工具,可以用来导入导出数据。
下面是使用BCP命令导出表数据的步骤:1.打开命令提示符或Powershell窗口,输入以下命令:bcp [数据库名称].[表名] out [文件路径] -c -T -S [服务器名称]其中,数据库名称是指要导出数据所在的数据库名,表名是指要导出数据的表名,文件路径是指要导出数据的文件路径,服务器名称是指SQL Server实例的名称。
例如,要将数据库AdventureWorks中的表Sales.SalesOrderDetail的数据导出为CSV文件,可以使用以下命令:bcp AdventureWorks.Sales.SalesOrderDetail out "C:\ExportData.csv" -c -T-S localhost2.执行上述命令后,BCP会将表数据导出为指定的文件。
使用BCP命令导出数据的优点是速度快、可批量导出多个表数据,但缺点是需要使用命令行操作,不够直观。
2. 使用SQL Server Management Studio导出数据SQL Server Management Studio(简称SSMS)是SQL Server的可视化管理工具,可以通过图形化界面导出表数据。
以下是使用SSMS导出表数据的步骤:1.打开SSMS,连接到SQL Server实例,展开数据库和表节点,右键点击要导出数据的表,选择“导出数据”选项。
2.在导出数据向导中,选择数据源和目标:–数据源:选择要导出数据的表。
–目标:选择要导出数据的文件格式(如CSV、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