国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

使用DTS導入多個文件數據到SQL Server中

2024-08-31 00:48:20
字體:
來源:轉載
供稿:網友
菜鳥學堂:

使用dts導入多個文件數據到sql server中

    在我們工作中,經常需要將保存在文件中的數據導入到sql serve的表中。有時可能需要同時從相同或不相同的文件目錄中導入多個文件的數據到sql server中。這里我們將討論如何使用批處理文件和dts從一個特定的文件目錄中,導入多個文件的數據到sqlserver中。

    試驗環境
  我們先創建整個試驗的環境。創建文件目錄“c:/myimport”,和三個文件a.csv、b.csv和c.csv,文件內容如下。同時,在sql server中創建一個表用來存放導入的數據。
    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
    
    create database bank
    go
    use bank
    go
    create table account([id] int, name varchar(100),
    accountno varchar(100), balance money)
    go
    create table logtable (id int identity(1,1),
   status varchar(500),
   importeddate datetime default getdate())
    go
    use master
    go
    sp_addlogin 'importuser','import','bank'
    go
    use bank
    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、創建text file (source) 和sql server連接,并創建數據轉換任務,如下圖所示。
  
  3、設置數據轉換的對應關系如下圖。
  

  4、創建動態屬性任務(dynamic tasks):連接inputfile中,設置catalog的值為全局變量databasename,datasource的值為全局變量filename;連接sqlserver中,設置datasource的值為全局變量servername。
  
   
  
  5、增加一個“成功時”的工作流在動態屬性任務和連接inputfile之間。
  
  6、如下圖那樣,創建一個執行sql任務,來保存數據導入的記錄。
  sql為insert into logtable (status) values (?)
  
  
  點擊參數,來設置參數,設置參數1為全局變量filename。
    
  
  7、增加一個“成功時”的工作流在連接sqlserver和執行sql任務之間。
  
  8、將dts包保存成結構化存儲文件。你也可以保存在sql server中,但我們這里只討論保存成結構化存儲文件的方式。
  

  創建批處理文件
  如下所示創建批處理文件c:/myimport/import.bat。
    rem type: batch file
    rem created by: digjim
    rem import all csv files to sql server using dts
 
    rem export dir listing to c:/myimport/dirlist.txt
    dir c:/myimport/*.csv /b > c:/myimport/dirlist.txt
 
    rem execute dts package for every file name in the dirlist.txt

    for /f "tokens=1,2,3" %%i in (c:/myimport/dirlist.txt) do "c:/program files/microsoft sql server/80/tools/binn/dtsrun.exe" -f "c:/myimport/myimportdts1.dts" -u importuser -p import –a "servername"="digjim" -a "filename"="c:/myimport/%%i" -a "databasename"="bank"

    rem rename all the files with "old" as suffix
    ren c:/myimport/*.csv *.oldcsv

  執行批處理文件
   當批處理文件被執行以后,他會在c:/myimport目錄下產生一個dirlist.txt的文件,這個文件會包含所有c:/myimport下擴展名為csv的文件,這些文件名會和其他必須的參數一氣傳輸給dtsrun.exe。在這個例子里,dirlist.txt的內容如下:
    c:/myimport/dirlist.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:/myimport/a.csv

2004-4-19 1:16

2

c:/myimport/b.csv

2004-4-19 1:16

3

c:/myimport/c.csv

2004-4-19 1:16


如果你把dts包存儲在sql server中,批處理文件就這樣寫:
     rem type: batch file
     rem created by: digjim
     rem import all csv files to sql server using dts
 
     rem export dir listing to c:/myimport/dirlist.txt
     dir c:/myimport/*.csv /b > c:/myimport/dirlist.txt
 
     rem execute dts package for every file name in the dirlist.txt

     for /f "tokens=1,2,3" %%i in (c:/myimport/dirlist.txt) do "c:/program files/microsoft sql server/80/tools/binn/dtsrun.exe" –s "sql" –n "myimportdts" -u importuser -p import –a "servername"="digjim" -a "filename"="c:/myimport/%%i" -a "databasename"="bank" 

     rem rename all the files with "old" as suffix
     ren c:/myimport/*.csv *.oldcsv

 

參考:

使用t-sql導入多個文件數據到sql server中
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 内丘县| 叶城县| 钟山县| 琼海市| 芦溪县| 云龙县| 新泰市| 永年县| 固原市| 客服| 贵阳市| 和平区| 河津市| 常山县| 汕尾市| 大姚县| 五莲县| 南华县| 闸北区| 甘南县| 姜堰市| 大余县| 黄山市| 四子王旗| 岳阳县| 博湖县| 炉霍县| 昂仁县| 德阳市| 肇源县| 林甸县| 长岛县| 承德县| 合肥市| 阳新县| 阳原县| 莆田市| 洮南市| 潞城市| 莱州市| 铁力市|