将sql中dts向导集成到程序中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将sql中dts向导集成到程序中相关的知识,希望对你有一定的参考价值。
DTS 导入、导出向导帮助用户交互式地建立包,从而在具有OLE DB 和ODBC 驱动程序的源和目标数据源间进行数据的导入、导出和转换。下面将以两个具体例子来讲解如何使用DTS 向导,同时将对其中涉及的每一个选项进行详细的介绍。例18-1: 使用DTS 向导导出pubs 数据库中的authors 表。
利用SQL Server Enterprise Manager 执行数据导出的步骤为:
(1) 启动SQL Server Enterprise Manager 后,登录到指定的服务器,右击Data Transformation Services 文件夹,在弹出菜单中选择All tasks, Export data,打开DTS Export Wizard, 如图18-1 所示。
1167834486_ddvip_4288.gif
(2) 单击“下一步”按钮,打开Choose a Data Source 对话框,如图18-2 所示。首先在Source Server 旁的下拉列表中选择数据源。在本例中选择Microsoft OLE DB Provider for SQL Server。 如果使用SQL Server 认证方式,则应输入访问数据库的合法用户账号和密码,在Database 旁的下拉列表中选择pubs (先单击Refresh 按钮)。
1167834486_ddvip_3082.gif
(3) 单击“下一步”按钮,打开Choose a Destination 对话框,如图18-3 所示。在Destination 旁的下拉列表中选择Microsoft OLE DB Provider for SQL Server。 Database 旁的下拉列表中选择DBA_pubs 数据库。
1167834486_ddvip_3964.gif
(4) 单击“下一步”按钮,打开Specify Table Copy or Query 对话框,如图18- 4 所示。在此处可以指定传递的内容,可以传递表或某一查询的数据结果集甚至于数据库对象。在本例中选择Copy table s from the source database。
1167834486_ddvip_5053.gif
(5) 单击“下一步”打开Select Source Table and View 对话框,如图18-5 所示。从中选择一个或多个表或视图进行传递。通过Preview 按钮可对将要传递的数据进行预览。
1167834487_ddvip_1760.gif
(6) 如果想定义数据转换时源表和目标表之间列的对应关系,则单击Trnsform 列的方格按钮,打开Columns Mapping, Transformation ,and Constrains 对话框,如图18-6 所示。
其中各选项的含义如下: Create destination table: 在从源表拷贝数据前首先创建目标表,在缺省情况下总是假设目标表不存在,如果存在则发生错误、除非选中了Drop and recreate destination table if it exists 选项; Delete rows in destination table: 在从源表拷贝数据前将目标表的所有行删除,仍保留目标表上的约束和索引,当然使用该选项的前提是目标表必须存在; Append rows to destination table: 把所有源表数据添加到目标表中,目标表中的数据、索引、约束仍保留。但是数据不一定追加到目标表的表尾,如果目标表上有聚簇索引,则可以决定将数据插入何处; Drop and recreate destination table: 如果目标表存在,则在从源表传递来数据前将目标表、表中的所有数据、索引等删除后重新创建新目标表; Enable identity insert: 允许向表的标识列中插入新值。
(7) 在进行数据转换时,可以通过脚本语言(如Jscript Perscript Vbscript)对源表中的某一列施加某种运算(乘、除或将该分割成几列、或将几列合并成一列),然后再将这种结果复制到目标表。此时应选中Columns Mapping、 Transformation, and Constrains 对话框的 Transformations 标签页,如图18-7 所示。
1167834487_ddvip_6508.gif
1167834487_ddvip_5096.gif
(8) 应选中Columns Mapping、 Transformation、 and Constraints 对话框的 Constraints 标签页,如图18-8 所示。
1167834487_ddvip_9253.gif
(9) 返回Select Source Table 对话框,单击“下一步”打开Save, Schedule and Replicate Package 对话框,如图18-9 所示。
1167834487_ddvip_4683.gif
在When 选项区可以选择与包有关的操作: Run immediately: 表示立即运行包; Create DTS package for Replication: 表示让由发布目标来进行复制; Schedule DTS package for later execution: 表示将包保存之后,在以后的某一规划时间运行。
在Save 选项,选中Save DTS Package, 则将包进行保存。 SQL Server: 将包存储在msdb 数据库中; SQL Server Meta Data Service :将包存储在Repository 中; Structured Storage File: 以DTS COM 结构的文件格式存储。容易通过文件服务器进行邮递和分发。 Visual Basic File (10) 单击“下一步”,打开Save DTS Package 对话框,如图18-10 所示。在 Name 输入该包的名称AuthorsPackage, 可以将包保存在本地服务器或其它的远程服务器,也可以选择适当的认证方式,如果选择SQL Server 认证,要提供用户名和密码。
1167834487_ddvip_3921.gif
(11) 单击“下一步”,在Completing the DTS Import/Export Wizard 对话框中单击“完成”,结束包的创建。操作如图18-11 所示。
注意:在步聚(4)的specity table copy or query 双对框中,如果选中use a query to specify the data to transfer选项,单击“下一步”之后打开之后打开type sol statement对话框,如图18-12所示。在query statement下的空白框中输入select语句,则该查询语句的结果集成是所有转换数据。可以通过单击query builder按钮来激活创建查询向导。
1167834487_ddvip_43.gif1167834487_ddvip_7767.gif1167834487_ddvip_5800.gif1167834488_ddvip_3478.gif1167834488_ddvip_4832.gif1167834488_ddvip_970.gif1167834488_ddvip_786.gif
文章知识点与官方知识档案匹配
mysql入门技能树SQL高级技巧CTE和递归查询
45585 人正在系统学习中
关注展开
打开CSDN APP,看更多技术内容
数据库导入导出工具(dts)
目前只做了 mysql 数据库导入导出工具 使用属性文件配置数据库 可扩展其它数据库的导入导出 导出数据格式为xml文件支持超大数据文件(百兆以上)导入导出
compile、implemention、api、compileOnly的区别
在gradle3.0中,如果我们依然使用compile依赖的话会有如下提示Configuration ‘compile’ is obsolete and has been replaced with ‘implementation’ and ‘api’. 可见,compile依赖关系已被弃用,被implementation和api替代,同样,provided也被compile only替代。 ...
继续访问
【android 修炼手册】Gradle 篇 -- Gradle 的基本使用
预备知识 基本的 android 开发知识 了解 Android Studio 基本使用 看完本文可以达到什么程度 掌握 gradle 的基本使用 了解 gradle 及 android gradle plugin 了解 gradle 构建阶段及生命周期回调 掌握 Task,Transform 等概念 学会自定义 task,自定义 gradle 插件 如果您已经达到上面的程度,那么可以不用...
继续访问
使用compileOnly依赖jar包,却仍然参与打包的问题
1.删除implementation fileTree(dir: ‘libs’, include: [’*.jar’]) 2.使用compileOnly引入编译时需要但不打包的jar
继续访问
热门推荐 gradle compileOnly的使用场景
Android studio升级到3.0之后,依赖方式也有了更新。 这是2.x 图片.png 来源网络 这是3.0 图片.png 来源网络 其中2.x版本的 Provided 变成了 compileOnly 这个命令的意思是 只在编译时有效,不会参与打包 举个例子: 新建一个工程,同时新建一个library 图片.png testlibrary的gra...
继续访问
用DTS方式实现数据导入导出操作 参考技术A 如果要将 DTS 向导集成到程序中,可以使用 Microsoft SQL Server Integration Services(SSIS),并按照以下步骤进行操作:
1. 在 Visual Studio 中创建一个新的 Integration Services 项目。
2. 在项目中添加一个“数据流任务”,并打开“数据流设计器”界面。
3. 在“数据流设计器”中,添加一个“ODBC 源”和一个“SQL Server 目标”组件,并通过 Data Link Properties(数据链接属性)对话框来连接到 SQL Server 数据源和目标。
4. 在“ODBC 源”中,选择 DTS 转换的源数据,并在其它属性中指定读取数据的过滤条件。
5. 在“SQL Server 目标”组件中,指定数据的目标表、字段映射、数据转换类型等信息。
6. 在“数据流”任务中,配置“数据流任务属性”,并设置各种数据源/目标连接、启动/停止控制等属性。
以上是一些大体的操作步骤,并且该过程会有些许复杂,需要您具备 SQL Server 的基本技能和认识,例如 SSIS、T-SQL 等,需要谨慎对待。如果您对数据库的集成开发不熟悉或不确定如何做,请咨询相关专业人士或官方文档。 参考技术B 将SQL中DTS向导集成到程序中,主要有以下两种实现方式:
1. 使用Microsoft SQL Server DTSRun命令行工具,编写批处理文件,调用dts包并将其在后台运行。程序可以通过批处理文件执行相应的dts包来调用向导的执行过程。
2. 利用 Microsoft.SqlServer.Dts.Runtime 命名空间提供的API接口,来直接在程序中集成和调用DTS包的执行操作。这种方式需要程序员具备 .NET 编程基础和一定的SQL Server DTS知识。
需要提醒的是,这两种实现方式均需要开发者对具体的 dts 包内容有一定的理解,以便进一步开发和维护代码。另外,随着 SQL Server 技术的发展,DTS 已经逐渐被 SSIS 所取代,因此建议尽可能选择使用 SSIS 来完成相关的 ETL 工作。 参考技术C 将SQL Server DTS向导集成到程序中可以通过使用SQL Server Integration Services(SSIS)来实现。SSIS是一个强大的ETL工具,它可以帮助您在SQL Server中创建和管理数据集成任务。
以下是一些步骤,可以帮助您将DTS向导集成到程序中:
1. 安装SQL Server Integration Services(SSIS)。
2. 打开Visual Studio,创建一个新的Integration Services项目。
3. 在Integration Services项目中,创建一个新的包。
4. 在包中,使用各种工具和任务来定义数据集成任务。您可以使用数据流任务来移动和转换数据,使用控制流任务来控制包的流程,使用连接管理器来管理连接到数据源的连接字符串,等等。
5. 配置您的数据集成任务,并测试它是否正常工作。
6. 将您的Integration Services项目部署到SQL Server中。
7. 在您的程序中,通过使用SQL Server Integration Services API(SSIS API)来执行您的数据集成任务。使用SSIS API,您可以轻松地在程序中启动、停止和监视您的集成任务。
总的来说,将DTS向导集成到程序中需要一些技术和编程经验。但是,使用SQL Server Integration Services可以帮助您更轻松地创建和管理数据集成任务,从而使您的工作更加高效和可靠。 参考技术D 要将 SQL Server Integration Services(SSIS)中的DTS向导集成到程序中,可以使用 SSIS API 提供的编程接口和类库。
以下是将 DTS 向导集成到程序中的一般步骤:
1. 创建一个 SSIS 应用程序项目。
2. 使用 SSIS API 创建一个包并添加任务和连接管理器。
3. 保存包到磁盘或内存中的文件。
4. 在程序中加载包并运行它。
5. 监视包运行的状态并处理任何错误或警告。
编写代码实现上述步骤需要具备一定的编程能力和对 SSIS 的了解。可参考 Microsoft 的官方文档来学习 SSIS API 的使用方法。
在SQL中如何将查询结果直接导出为EXCEL表格
如题
简单问题
100分.速度
这里,我建议使用一个简单,但是很有用的T-SQL 存储程序,它可以通过使用链接服务器(linked server)技术将数据导出到Excel 中。
为了实现导出,你必须首先创建一个空的有固定名字的Excel文件,并将其放置在服务器上。我把它命名为Empty.xls,并放置在c:temp的目录下。这个文件不会被删除,并且在装入数据之前,作为目标Excel文件的模板使用。
Empty.xls文件被构建的时候,只含有一个工作页,名为ExcelTable,其中的第一行(仅有的一行)包含如下字母: A,B,C,...Z。这些字母可作为Excel表的列名称。这意味着在一个查询中,我们可以导出26个列。(给定的存储程序代码可被修改,以支持结果集中含有更多的列的情况。只需要在Excel模板中简单地书写F1, F2 ,F3...,然后更改程序中相应列的列表即可反映出变化了。)
sp_write2Excel是一个T-SQL存储过程,它获取目标Excel文件的名字和路径,结果集中列的数量,以及T-SQL查询。在查询中应该使用转换函数将所有的非字符串数据导入列中,因为最终的Excel单元中数据实际上都是字符串格式的。
这个过程将empty.xls模板文件拷贝到新的目标Excel文件中。然后它再构建一个链接服务器到刚才的文件中,并使用动态的T-SQL来构建这个Excel文件,并且使用插入/选择语句来将数据写入其中。
以下是程序代码:
Create proc sp_write2Excel (@fileName varchar(100),
@NumOfColumns tinyint,
@query varchar(200))
as
begin
declare @dosStmt varchar(200)
declare @tsqlStmt varchar(500)
declare @colList varchar(200)
declare @charInd tinyint
set nocount on
-- 构建列的列表 A,B,C ...
-- 直到达到列的数量.
set @charInd=0
set @colList = 'A'
while @charInd < @NumOfColumns - 1
begin
set @charInd = @charInd + 1
set @colList = @colList + ',' + char(65 + @charInd)
end
-- 创建一个空的Excel 文件作为目标文件,通过拷贝模板Excel 文件来命名
set @dosStmt = ' copy c:tempempty.xls ' + @fileName
exec master..xp_cmdshell @dosStmt
-- 创建一个“临时”的链接服务器到刚才的文件中,以用于“导出”数据
EXEC sp_addlinkedserver 'ExcelSource',
'Jet 4.0',
'Microsoft.Jet.OLEDB.4.0',
@fileName,
NULL,
'Excel 5.0'
-- 构建一个T-SQL 语句,用于实际导出查询结果
-- 到目标链接服务器上的表中
set @tsqlStmt = 'Insert ExcelSource...[ExcelTable$] ' + ' ( ' + @colList + ' ) '+ @query
print @tsqlStmt
-- 执行动态的 TSQL语句
exec (@tsqlStmt)
-- 删除链接服务器
EXEC sp_dropserver 'ExcelSource'
set nocount off
end
GO
程序使用实例:
Use master
go
exec sp_write2Excel
--目标excel文件
'c:tempNorthProducts.xls' ,
-- 结果中列的数量
3,
-- 将要导出结果的查询
'select convert(varchar(10),ProductId),
ProductName,
Convert (varchar(20),UnitPrice) from Northwind..Products'
结论,这个程序可作为一个通用的工具将数据导出到Excel工作页中,而BCP工具则只能将数据导出到文本文件中。
我们可以使用这个程序来代替DTS包设计器,以及DTS向导,每当需要调用这样的动作的时候,都可以用它将数据导出到excel 文件中。
参考资料:http://lxinxuan.itpub.net/post/3717/28269
参考技术A 看看有帮助没~VB操作EXCEL
全面控制 Excel
首先创建 Excel 对象,使用ComObj:
Dim ExcelID as Excel.Application
Set ExcelID as new Excel.Application
1) 显示当前窗口:
ExcelID.Visible := True;
2) 更改 Excel 标题栏:
ExcelID.Caption := \'应用程序调用 Microsoft Excel\';
3) 添加新工作簿:
ExcelID.WorkBooks.Add;
4) 打开已存在的工作簿:
ExcelID.WorkBooks.Open( \'C:\\Excel\\Demo.xls\' );
5) 设置第2个工作表为活动工作表:
ExcelID.WorkSheets[2].Activate;
或 ExcelID.WorkSheets[ \'Sheet2\' ].Activate;
6) 给单元格赋值:
ExcelID.Cells[1,4].Value := \'第一行第四列\';
7) 设置指定列的宽度(单位:字符个数),以第一列为例:
ExcelID.ActiveSheet.Columns[1].ColumnsWidth := 5;
8) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:
ExcelID.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米
9) 在第8行之前插入分页符:
ExcelID.WorkSheets[1].Rows[8].PageBreak := 1;
参考代码:ActiveSheet.HPageBreaks(1).Location = Range("A22")
10) 在第8列之前删除分页符:
ExcelID.ActiveSheet.Columns[4].PageBreak := 0;
11) 指定边框线宽度:
ExcelID.ActiveSheet.Range[ \'B3:D4\' ].Borders[2].Weight := 3;
1-左 2-右 3-顶 4-底 5-斜( \\ ) 6-斜( / )
12) 清除第一行第四列单元格公式:
ExcelID.ActiveSheet.Cells[1,4].ClearContents;
13) 设置第一行字体属性:
ExcelID.ActiveSheet.Rows[1].Font.Name := \'隶书\';
ExcelID.ActiveSheet.Rows[1].Font.Color := clBlue;
ExcelID.ActiveSheet.Rows[1].Font.Bold := True;
ExcelID.ActiveSheet.Rows[1].Font.UnderLine := True;
14) 进行页面设置:
a.页眉:
ExcelID.ActiveSheet.PageSetup.CenterHeader := \'报表演示\';
b.页脚:
ExcelID.ActiveSheet.PageSetup.CenterFooter := \'第&P页\';
c.页眉到顶端边距2cm:
ExcelID.ActiveSheet.PageSetup.HeaderMargin := 2/0.035;
d.页脚到底端边距3cm:
ExcelID.ActiveSheet.PageSetup.HeaderMargin := 3/0.035;
e.顶边距2cm:
ExcelID.ActiveSheet.PageSetup.TopMargin := 2/0.035;
f.底边距2cm:
ExcelID.ActiveSheet.PageSetup.BottomMargin := 2/0.035;
g.左边距2cm:
ExcelID.ActiveSheet.PageSetup.LeftMargin := 2/0.035;
h.右边距2cm:
ExcelID.ActiveSheet.PageSetup.RightMargin := 2/0.035;
i.页面水平居中:
ExcelID.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035;
j.页面垂直居中:
ExcelID.ActiveSheet.PageSetup.CenterVertically := 2/0.035;
k.打印单元格网线:
ExcelID.ActiveSheet.PageSetup.PrintGridLines := True;
15) 拷贝操作:
a.拷贝整个工作表:
ExcelID.ActiveSheet.Used.Range.Copy;
b.拷贝指定区域:
ExcelID.ActiveSheet.Range[ \'A1:E2\' ].Copy;
c.从A1位置开始粘贴:
ExcelID.ActiveSheet.Range.[ \'A1\' ].PasteSpecial;
d.从文件尾部开始粘贴:
ExcelID.ActiveSheet.Range.PasteSpecial;
16) 插入一行或一列:
a. ExcelID.ActiveSheet.Rows[2].Insert;
b. ExcelID.ActiveSheet.Columns[1].Insert;
17) 删除一行或一列:
a. ExcelID.ActiveSheet.Rows[2].Delete;
b. ExcelID.ActiveSheet.Columns[1].Delete;
18) 打印预览工作表:
ExcelID.ActiveSheet.PrintPreview;
19) 打印输出工作表:
ExcelID.ActiveSheet.PrintOut;
20) 工作表保存:
If not ExcelID.ActiveWorkBook.Saved then
ExcelID.ActiveSheet.PrintPreview
End if
21) 工作表另存为:
ExcelID.SaveAs( \'C:\\Excel\\Demo1.xls\' );
22) 放弃存盘:
ExcelID.ActiveWorkBook.Saved := True;
23) 关闭工作簿:
ExcelID.WorkBooks.Close;
24) 退出 Excel:
ExcelID.Quit;
25) 设置工作表密码:
ExcelID.ActiveSheet.Protect "123", DrawingObjects:=True, Contents:=True, Scenarios:=True
26) EXCEL的显示方式为最大化
ExcelID.Application.WindowState = xlMaximized
27) 工作薄显示方式为最大化
ExcelID.ActiveWindow.WindowState = xlMaximized
28) 设置打开默认工作薄数量
ExcelID.SheetsInNewWorkbook = 3
29) \'关闭时是否提示保存(true 保存;false 不保存)
ExcelID.DisplayAlerts = False
30) 设置拆分窗口,及固定行位置
ExcelID.ActiveWindow.SplitRow = 1
ExcelID.ActiveWindow.FreezePanes = True
31) 设置打印时固定打印内容
ExcelID.ActiveSheet.PageSetup.PrintTitleRows = "$1:$1"
32) 设置打印标题
ExcelID.ActiveSheet.PageSetup.PrintTitleColumns = ""
33) 设置显示方式(分页方式显示)
ExcelID.ActiveWindow.View = xlPageBreakPreview
34) 设置显示比例
ExcelID.ActiveWindow.Zoom = 100
35) 让Excel 响应 DDE 请求
Ex.Application.IgnoreRemoteRequests = False
用VB操作EXCEL
Private Sub Command3_Click()
On Error GoTo err1
Dim i As Long
Dim j As Long
Dim objExl As Excel.Application \'声明对象变量
Me.MousePointer = 11 \'改变鼠标样式
Set objExl = New Excel.Application \'初始化对象变量
objExl.SheetsInNewWorkbook = 1 \'将新建的工作薄数量设为1
objExl.Workbooks.Add \'增加一个工作薄
objExl.Sheets(objExl.Sheets.Count).Name = "book1" \'修改工作薄名称
objExl.Sheets.Add , objExl.Sheets("book1") ‘增加第二个工作薄在第一个之后
objExl.Sheets(objExl.Sheets.Count).Name = "book2"
objExl.Sheets.Add , objExl.Sheets("book2") ‘增加第三个工作薄在第二个之后
objExl.Sheets(objExl.Sheets.Count).Name = "book3"
objExl.Sheets("book1").Select \'选中工作薄<book1>
For i = 1 To 50 \'循环写入数据
For j = 1 To 5
If i = 1 Then
objExl.Selection.NumberFormatLocal = "@" \'设置格式为文本
objExl.Cells(i, j) = " E " & i & j
Else
objExl.Cells(i, j) = i & j
End If
Next
Next
objExl.Rows("1:1").Select \'选中第一行
objExl.Selection.Font.Bold = True \'设为粗体
objExl.Selection.Font.Size = 24 \'设置字体大小
objExl.Cells.EntireColumn.AutoFit \'自动调整列宽
objExl.ActiveWindow.SplitRow = 1 \'拆分第一行
objExl.ActiveWindow. SplitColumn = 0 \'拆分列
objExl.ActiveWindow.FreezePanes = True \'固定拆分 objExl.ActiveSheet.PageSetup.PrintTitleRows = "$1:$1" \'设置打印固定行
objExl.ActiveSheet.PageSetup.PrintTitleColumns = "" \'打印标题 objExl.ActiveSheet.PageSetup.RightFooter = "打印时间: " & _
Format(Now, "yyyy年mm月dd日 hh:MM:ss")
objExl.ActiveWindow.View = xlPageBreakPreview \'设置显示方式
objExl.ActiveWindow.Zoom = 100 \'设置显示大小
objExl.ActiveSheet.PageSetup.Orientation = xlLandscape ‘设置打印方向(横向)
\'给工作表加密码
objExl.ActiveSheet.Protect "123", DrawingObjects:=True, _
Contents:=True, Scenarios:=True
objExl.Application.IgnoreRemoteRequests = False
objExl.Visible = True \'使EXCEL可见
objExl.Application.WindowState = xlMaximized \'EXCEL的显示方式为最大化
objExl.ActiveWindow.WindowState = xlMaximized \'工作薄显示方式为最大化
objExl.SheetsInNewWorkbook = 3 \'将默认新工作薄数量改回3个
Set objExl = Nothing \'清除对象
Me.MousePointer = 0 \'修改鼠标
Exit Sub
err1:
objExl.SheetsInNewWorkbook = 3
objExl.DisplayAlerts = False \'关闭时不提示保存
objExl.Quit \'关闭EXCEL
objExl.DisplayAlerts = True \'关闭时提示保存
Set objExl = Nothing
Me.MousePointer = 0
End Sub 参考技术B 特简单————————————
select …… into nb
(省略号是你自己的SQL语句哦)
导出表nB为EXCEL工作簿就行了
以上是关于将sql中dts向导集成到程序中的主要内容,如果未能解决你的问题,请参考以下文章
我应该在我的 MS SQL 服务器中安装啥 Oracle 驱动程序才能使用 DTS 将数据从 Oracle 服务器复制到 MS SQL 服务器?