|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
MySQL最初的开发者的意图是用mSQL和他们自己的快速低级例程(ISAM)去连接表格。经过一些测试后,开发者得出结论:mSQL并没有他们需要的那么快和灵活。server|数据
利用DTS导进多个文件数据到SQLServer中
在我们事情中,常常必要将保留在文件中的数据导进到SQLServe的表中。偶然大概必要同时从不异或不不异的文件目次中导进多个文件的数据到SQLServer中。这里我们将会商怎样利用批处置文件和DTS从一个特定的文件目次中,导进多个文件的数据到SQLServer中。
实验情况
我们先创立全部实验的情况。创立文件目次“C:MyImport”,和三个文件a.csv、b.csv和c.csv,文件内容以下。同时,在SQLServer中创立一个表用来寄存导进的数据。
C:MyImporta.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.csv
11,Rubon,9671792711,400.14
22,Mike,9418952711,4000.56
39,Hsu,75611792511,1230.00
C:MyImportc.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_addloginimportuser,import,Bank
go
useBank
go
sp_adduserimportuser
go
sp_addrolememberdb_datareader,importuser
go
sp_addrolememberdb_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:MyImportImport.bat。
REMType:BatchFile
REMCreatedby:Digjim
REMImportallcsvfilestoSQLServerusingDTS
REMExportDIRlistingtoC:MyImportDirlist.txt
dirc:MyImport*.csv/b>C:MyImportDirlist.txt
REMExecuteDTSpackageforeveryfilenameintheDirlist.txt
for/f"tokens=1,2,3"%%iin(C:MyImportDirlist.txt)do"C:ProgramFilesMicrosoftSQLServer80ToolsBinnDTSrun.exe"-F"c:myimportmyimportdts1.dts"-Uimportuser-PimportCA"ServerName"="DIGJIM"-A"FileName"="c:myimport\%%i"-A"DatabaseName"="Bank"
REMRenameallthefileswith"old"assuffix
renc:myimport*.csv*.oldcsv
实行批处置文件
当批处置文件被实行今后,他会在C:MyImport目次下发生一个DirList.txt的文件,这个文件会包括一切C:MyImport下扩大名为CSV的文件,这些文件名会和其他必需的参数一气传输给DTSrun.exe。在这个例子里,DirList.txt的内容以下:
C:MyImportDirList.txt
acsv
b.csv
c.csv
注重,在批处置文件中,依据你本人的情形设置ServerName,FileName和DatabaseName参数。
了局
如今你能够往你的数据库看了局,
批处置输出的数据:
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
11
Rubon
9671792711
400.14
22
Mike
9418952711
4000.56
39
Hsu
75611792511
1230
69
Lucy
8411992710
305.11
45
Grace
3413452713
246.52
33
Saint
5461795716
1278.7
在logtable中纪录的Log。
1
c:myimporta.csv
2004-4-191:16
2
c:myimport.csv
2004-4-191:16
3
c:myimportc.csv
2004-4-191:16
假如你把DTS包存储在SQLServer中,批处置文件就如许写:
REMType:BatchFile
REMCreatedby:Digjim
REMImportallcsvfilestoSQLServerusingDTS
REMExportDIRlistingtoC:MyImportDirlist.txt
dirc:MyImport*.csv/b>C:MyImportDirlist.txt
REMExecuteDTSpackageforeveryfilenameintheDirlist.txt
for/f"tokens=1,2,3"%%iin(C:MyImportDirlist.txt)do"C:ProgramFilesMicrosoftSQLServer80ToolsBinnDTSrun.exe"CS"SQL"CN"myimportdts"-Uimportuser-PimportCA"ServerName"="DIGJIM"-A"FileName"="c:myimport\%%i"-A"DatabaseName"="Bank"
REMRenameallthefileswith"old"assuffix
renc:myimport*.csv*.oldcsv
参考:
利用T-SQL导进多个文件数据到SQLServer中
“数据行级锁定”的意思是指在事务操作的执行过程中锁定正在被处理的个别记录,不让其他用户进行访问。这种锁定将影响到(但不限于)SELECT、LOCKINSHAREMODE、SELECT、FORUPDATE命令以及INSERT、UPDATE和DELETE命令。 |
|