|
導讀數據庫,簡而言之可視為電子化的文件柜——存儲電子文件的處所,用戶可以對文件中的數據進行新增、截取、更新、刪除等操作。所謂“數據庫”是以一定方式儲存在一起、能與多個用戶共享、具有盡可能小的冗余度、與應... 數據庫,簡而言之可視為電子化的文件柜——存儲電子文件的處所,用戶可以對文件中的數據進行新增、截取、更新、刪除等操作。所謂“數據庫”是以一定方式儲存在一起、能與多個用戶共享、具有盡可能小的冗余度、與應用程序彼此獨立的數據集合。 在我們工作中,經常需要將保存在文件中的數據導入到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參數。 全新的路由器不僅讓你更穩定快速地連接無線網絡,更可以讓家中的智能設備連接在一起。 |
溫馨提示:喜歡本站的話,請收藏一下本站!