数据库

本类阅读TOP10

·SQL语句导入导出大全
·SQL Server日期计算
·SQL语句导入导出大全
·SQL to Excel 的应用
·Oracle中password file的作用及说明
·MS SQLServer OLEDB分布式事务无法启动的一般解决方案
·sqlserver2000数据库置疑的解决方法
·一个比较实用的大数据量分页存储过程
·如何在正运行 SQL Server 7.0 的服务器之间传输登录和密码
·SQL中两台服务器间使用连接服务器

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
用DTS导入文本文件时, 怎样跳过文本文件的第一行和最后一行

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

Suppose we have a table as follows:

CREATE TABLE [ignore_rows] (
 [c1] [int] NULL ,
 [c2] [char] (10)
)

And the text file is as follows:

1,aaa
2,bbb
3,ccc
100,ddd

To ignore the first and the last row of the text file when importing the text file to the table, you can use these steps:

1. In SQL Enterprise Manager, right click the Data Transformation Services, click New Package, this will launch the DTS package designer.

2. Click Package --> Properties menu, click the Global Variables tab, add two global variables:

currentRow , int, initial value 0  --> we use it to track the row we are currently processing.
lastRow, int, initial value 0         --> we use it to record the row number of the text file.

3. Add an ActiveX Script Task to the design pane, the script is as follows.

This script use the File System Object (FSO), for more information regarding FSO, please check it on MSDN.

Function Main()

Dim fso
Dim ts
Dim rowCount

Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.OpenTextFile("C:\data\ignore_rows.txt", 1)  '1 for reading

rowCount = 0

While Not ts.AtEndOfStream
ts.SkipLine
rowCount = rowCount + 1
Wend

DTSGlobalVariables("currentRow").Value=0
DTSGlobalVariables("lastRow").Value=rowcount

Main = DTSTaskExecResult_Success

End Function

4. Drag two connections to the pane, one text file connection and one Microsoft OLE DB Provider for SQL Server connection, and then drag a Transform Data Task. The ActiveX transformation script is as follows:

Function Main()

DTSGlobalVariables("currentRow").Value=DTSGlobalVariables("currentRow").Value+1

'The following code will skip and first row and last row
if DTSGlobalVariables("currentRow").Value=1 or DTSGlobalVariables("currentRow").Value=DTSGlobalVariables("lastRow").Value then
 Main=DTSTransformStat_SkipRow
else
 DTSDestination("c1") = DTSSource("Col001")
 DTSDestination("c2") = DTSSource("Col002")
 Main = DTSTransformStat_OK
end if

End Function

5. Set the precedence correctly, the final package is as follows:

ActiveX Script Task --(on success)--> Text file connection --(transform data)--> SQL connection

 




相关文章

相关软件