<script type="text/javascript">
</script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
使用 DTS导入多个文件数据到SQLServer中
在我们工作中,经常需要将保存在文件中的数据导入到SQLServe的表中。有时可能需要同时从相同或不相同的文件目录中导入多个文件的数据到SQLServer中。这里我们将讨论如何使用批处理文件和 DTS从一个特定的文件目录中,导入多个文件的数据到SQLServer中。
试验环境
我们先创建整个试验的环境。创建文件目录“C:/MyImport”,和三个文件a.csv、b.csv和c.csv,文件内容如下。同时,在SQLServer中创建一个表用来存放导入的数据。
C:/MyImport/a.csv
1,MAK,A9411792711,3400.25
2,Claire,A9411452711,24000.33
3,Sam,A5611792711,1200.34
4,Wright,A5611792711,1200.34
5,Richard,G561d792755,1223.34
6,Valarie,B5611792788,1240.32
C:/MyImport/b.csv
11,Rubon,9671792711,400.14
22,Mike,9418952711,4000.56
39,Hsu,75611792511,1230.00
C:/MyImport/c.csv
69,Lucy,8411992710,305.11
45,Grace,3413452713,246.52
33,Saint,5461795716,1278.70
CreateDatabaseBank
Go
UseBank
go
CreatetableAccount([ID]int,NameVarchar(100),
AccountNovarchar(100),Balancemoney)
Go
Createtablelogtable(idintidentity(1,1),
Statusvarchar(500),
Importeddatedatetimedefaultgetdate())
Go
usemaster
go
sp_addlogin'importuser','import','Bank'
go
useBank
go
sp_adduser'importuser'
go
sp_addrolemember'db_datareader','importuser'
go
sp_addrolemember'db_datawriter','importuser'
go
创键 DTS
1、在 DTS中创建3个全局变量,FileName、ServerName和DatabaseName。
2、创建TextFile(Source)和SQLServer连接,并创建数据转换任务,如下图所示。
3、设置数据转换的对应关系如下图。
4、创建动态属性任务(dynamictasks):连接InputFile中,设置Catalog的值为全局变量DatabaseName,DataSource的值为全局变量FileName;连接SQLServer中,设置DataSource的值为全局变量ServerName。
5、增加一个“成功时”的工作流在动态属性任务和连接InputFile之间。
6、如下图那样,创建一个执行SQL任务,来保存数据导入的记录。
SQL为INSERTINTOLogTable(Status)VALUES(?)
点击参数,来设置参数,设置参数1为全局变量FileName。
7、增加一个“成功时”的工作流在连接SQLServer和执行SQL任务之间。
8、将 DTS包保存成结构化存储文件。你也可以保存在SQLServer中,但我们这里只讨论保存成结构化存储文件的方式。
创建批处理文件
如下所示创建批处理文件C:/MyImport/Import.bat。
REMType:BatchFile
REMCreatedby:Digjim
REMImportallcsvfilestoSQLServerusing DTS
REMExportDIRlistingtoC:/MyImport/Dirlist.txt
dirc:/MyImport/*.csv/b>C:/MyImport/Dirlist.txt
REMExecute DTSpackageforeveryfilenameintheDirlist.txt
for/f"tokens=1,2,3"%%iin(C:/MyImport/Dirlist.txt)do"C:/ProgramFiles/MicrosoftSQLServer/80/Tools/Binn/ DTSrun.exe"-F"c:/myimport/myimport DTS1. DTS"-Uimportuser-Pimport–A"ServerName"="DIGJIM"-A"FileName"="c:/myimport/%%i"-A"DatabaseName"="Bank"上一页
<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript">
</script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
使用 DTS导入多个文件数据到SQLServer中
在我们工作中,经常需要将保存在文件中的数据导入到SQLServe的表中。有时可能需要同时从相同或不相同的文件目录中导入多个文件的数据到SQLServer中。这里我们将讨论如何使用批处理文件和 DTS从一个特定的文件目录中,导入多个文件的数据到SQLServer中。
试验环境
我们先创建整个试验的环境。创建文件目录“C:/MyImport”,和三个文件a.csv、b.csv和c.csv,文件内容如下。同时,在SQLServer中创建一个表用来存放导入的数据。
C:/MyImport/a.csv
1,MAK,A9411792711,3400.25
2,Claire,A9411452711,24000.33
3,Sam,A5611792711,1200.34
4,Wright,A5611792711,1200.34
5,Richard,G561d792755,1223.34
6,Valarie,B5611792788,1240.32
C:/MyImport/b.csv
11,Rubon,9671792711,400.14
22,Mike,9418952711,4000.56
39,Hsu,75611792511,1230.00
C:/MyImport/c.csv
69,Lucy,8411992710,305.11
45,Grace,3413452713,246.52
33,Saint,5461795716,1278.70
CreateDatabaseBank
Go
UseBank
go
CreatetableAccount([ID]int,NameVarchar(100),
AccountNovarchar(100),Balancemoney)
Go
Createtablelogtable(idintidentity(1,1),
Statusvarchar(500),
Importeddatedatetimedefaultgetdate())
Go
usemaster
go
sp_addlogin'importuser','import','Bank'
go
useBank
go
sp_adduser'importuser'
go
sp_addrolemember'db_datareader','importuser'
go
sp_addrolemember'db_datawriter','importuser'
go
创键 DTS
1、在 DTS中创建3个全局变量,FileName、ServerName和DatabaseName。
2、创建TextFile(Source)和SQLServer连接,并创建数据转换任务,如下图所示。
3、设置数据转换的对应关系如下图。
4、创建动态属性任务(dynamictasks):连接InputFile中,设置Catalog的值为全局变量DatabaseName,DataSource的值为全局变量FileName;连接SQLServer中,设置DataSource的值为全局变量ServerName。
5、增加一个“成功时”的工作流在动态属性任务和连接InputFile之间。
6、如下图那样,创建一个执行SQL任务,来保存数据导入的记录。
SQL为INSERTINTOLogTable(Status)VALUES(?)
点击参数,来设置参数,设置参数1为全局变量FileName。
7、增加一个“成功时”的工作流在连接SQLServer和执行SQL任务之间。
8、将 DTS包保存成结构化存储文件。你也可以保存在SQLServer中,但我们这里只讨论保存成结构化存储文件的方式。
创建批处理文件
如下所示创建批处理文件C:/MyImport/Import.bat。
REMType:BatchFile
REMCreatedby:Digjim
REMImportallcsvfilestoSQLServerusing DTS
REMExportDIRlistingtoC:/MyImport/Dirlist.txt
dirc:/MyImport/*.csv/b>C:/MyImport/Dirlist.txt
REMExecute DTSpackageforeveryfilenameintheDirlist.txt
for/f"tokens=1,2,3"%%iin(C:/MyImport/Dirlist.txt)do"C:/ProgramFiles/MicrosoftSQLServer/80/Tools/Binn/ DTSrun.exe"-F"c:/myimport/myimport DTS1. DTS"-Uimportuser-Pimport–A"ServerName"="DIGJIM"-A"FileName"="c:/myimport/%%i"-A"DatabaseName"="Bank"上一页
<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript">
</script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>