使用FSO把文本資訊匯入資料庫

來源:互聯網
上載者:User
fso|匯入資料|資料庫


在開發WEB應用程式中,我們經常需要對檔案系統中的磁碟機、檔案夾和檔案進行處理,比如收集磁碟機的相關資訊;建立、添加、移動或刪除檔案夾和檔案等。在VB6中新提供了一套稱為FSO(File System Object)物件模型來對檔案系統進行訪問處理。該模型提供了一個基於對象的工具,通過它所提供的一系列屬性和方法,我們可以在應用程式中更簡單、靈活地對檔案系統進行各種操作。
   一、FSO簡介
   FSO物件模型包含以下幾種對象:
   Drive對象:允許收集系統物理或通過LAN與系統邏輯串連的硬碟、CD-ROM等磁碟機的可用空間、共用名稱等資訊。
   Folder對象:允許建立、刪除或移動檔案夾,並向系統查詢檔案夾的名稱、路徑等。
   Files對象:允許建立、刪除或移動檔案,並向系統查詢檔案的名稱、路徑等。
   TextStream對象:允許建立和讀寫文字檔。
   FileSystemObject對象:提供一整套用於磁碟機、檔案夾和檔案操作的方法,在功能上可以把它看作是上面幾個對象的集合并且經常與它們配合使用。與該對象相關聯的很多方法重複了前面四個對象中的方法,因此我們既可以通過FileSystemObject對象來對磁碟機、檔案夾和檔案進行大多數操作,也可以通過對應的磁碟機、檔案夾或檔案對象對這些組件進行操作。FSO模型通過兩種方法實現對同一對象的操作,其操作效果是相同的,提供這種冗餘功能的目的是為了實現最大的編程靈活性。

在這篇文章中,我們將講解利用FSO物件模型的TextStream對象對文字檔的操作。

(一) 用 FileSystemObject 來擷取文字檔對象
   1.建立一個 FileSystemObject 對象執行個體
要進行檔案操作,首先必須建立一個 FileSystemObject 對象執行個體,用來建立或開啟一個檔案.建立一個 FileSystemObject 對象執行個體的具體格式為(以AFileSystemObject)為例:
Set AFileSystemObject = CreateObject("Scripting.FileSystemObjecct")
   2.用 FileSystemObject 來擷取文字檔對象TextStream
FileSystemObject 提供了兩種方法用於擷取文字檔對象 TextStream,其中用於建立
檔案的是 CreateTextFile,用於開啟已存在檔案的是 OpenTextFile,兩種方法的返回結果都是
一個 TextStream 對象的執行個體,利用該對象可以進行檔案的具體操作.
⑴ 建立一個新檔案
   建立新檔案的方法的具體格式為(以AFileSystemObject為例):
   AFilesystemObject.CreateTextFile(NewFileName,OverwriteExistingFile,IsUnicode)
其中:
   NewFileName 是一個string值,指定要建立的檔案的名稱,通常為檔案的實際路徑
加檔案名稱,如C:\webshare\aspsamp\filetest.txt
   OverwriteExistingFile 是一個Boolean值,表示如果有同名檔案存在時是否覆蓋
原來的檔案.該參數可以省略,預設時為False,即不覆蓋原來檔案.
   IsUnicode 是一個Boolean值,表示要建立的檔案是ASCII檔案還是Unicode檔案,
該參數可以省略,預設時為False,即為ASCII檔案.
⑵ 開啟已存在的檔案
   開啟已存在檔案的方法的具體格式為(以AFileSystemObject為例):
   AFilesystemObject.OpenTextFile(FileName,IOMode,create,format)
其中:
   FileName 是一個string值,指定要開啟的檔案的名稱,通常為檔案的實際路徑
加檔案名稱,C:\filepath\test.txt
   IOMode 是常數值,表示開啟檔案的目的,ForReading(1)表示用於讀取資料;
ForAppending表示用於增加資料.該參數可以省略,預設時為ForReading.
   Create 是一個Boolean值,表示要開啟的檔案不存在時是否建立新檔案,
該參數可以省略,預設時為False,即不建立新檔案.
   Format 表示檔案開啟的方式.其可能的值及含義如下:
TristateTrue : 以 Unicode 的方式開啟.
TristateFalse : 以 ASCII 的方式開啟.
TristateUseDefault : 以系統預設的方式開啟.
該參數可以省略,預設時為 TristateFalse ,即ASCII方式.
(二).用 TextStream 進行檔案操作
   在建立或開啟了檔案之後,就可利用對象 TextStream 提供的方法進行檔案的實際操作了.
   1.用於寫操作的方法有:
⑴ Write(string)
   將由string指定的字串寫入到檔案中.
⑵ WriteLine(string)
   在檔案中寫入由string指定的字串,並寫入一個換行字元.
   參數string可以省略,此時將在檔案中插入一個空行.
⑶ WriteBlankLines(NumOfLines)
   在檔案中插入若干空行,行數由 NumOfLines 指定.
   2.用於讀操作的方法和屬性方法有:
⑴ AtEndOfLine
   該屬性是一個Boolean值,表示檔案指標是否已指向當前行的行尾.
⑵ AtEndOfStream
   該屬性是一個Boolean值,表示檔案指標是否已指向檔案尾.
⑶ Column
   該屬性是一個整數值,表示檔案指標在當前行中的位置.
⑷ Line
   該屬性是一個整數值,表示檔案指標所在行的行號.
⑸ Read(NumOfCharacters)
   該方法從檔案當前位置開始,讀入由NumOfCharacters數目指定的若干字元,返回一個
   字串.
⑹ ReadLine
   該方法從檔案當前位置開始,讀入當前行的內容直到行尾,返回一個字串.
⑺ ReadAll
   該方法從當前位置開始,讀入整個檔案的內容直到檔案結束,返回一個字串.
⑻ Skip(NumOfCharacters)
   該方法從檔案當前位置開始,跳過由NumOfCharacters數目指定的若干字元.
⑼ SKipLine
   該方法從檔案當前位置開始,跳過當前行的內容.
   3.用於關閉檔案的方法有:
⑴ Close
   關閉已經建立或開啟的檔案.

(三)、下面就以一個執行個體來說明如何使用FSO來讀取文字檔和如何儲存到資料庫:

1、 先建立一個讀取檔案路徑的頁面:file.htm

<FORM METHOD=POST ACTION="upFile.asp" >

<div align="center"> <br>

<br>

<br>

<br>

<input type="file" name="path" size="40">

<INPUT TYPE="submit" name="dr" value="匯入資訊">

</div>

</FORM>

2、 編寫把擷取到的文本值儲存到資料庫代碼:upFile.asp

<%@Language="VBScript"%>

<%Response.Buffer=true%>

<!--#include file="adovbs.inc"-->

<%

strConn="DSN=DataSourceName"

set Conn=Server.CreateObject("ADODB.Connection")

Conn.open strConn

set ObjComm=Server.CreateObject("ADODB.Command")

ObjComm.CommandText="sp_AddMsg" ‘調用預存程序

ObjComm.CommandType=adCmdStoredProc

Set ObjComm.ActiveConnection=Conn

''''''''''建立輸入輸出參數'''''''''''''''''

Set ObjParamECom=ObjComm.CreateParameter("WC_ECompanyName",adVarchar,adParamInput,100)

ObjComm.Parameters.Append ObjParamECom

'@in_ECompanyName Varchar(50), --公司英文名稱

Set ObjParamAddr=ObjComm.CreateParameter("WC_Address",adVarchar,adParamInput,200)

ObjComm.Parameters.Append ObjParamAddr

'@in_Address Varchar(50), --公司地址

Set ObjParamCity=ObjComm.CreateParameter("WC_City",adVarchar,adParamInput,100)

ObjComm.Parameters.Append ObjParamCity

'@in_City Varchar(50), --城市

''''''''''建立參數完畢''''''''''''''''''''

%>

<%

dim AllText,strLine1,strLine2,strLine3

dim strpath,fileurl

fileurl=""

strpath=Trim(Request.form("path"))

fileurl=strpath

SET FSO=CreateObject("Scripting.FileSystemObject")

SET ATextStream=FSO.OpenTextFile(fileurl,1,false,TristateFalse)

'''''''''提取資料''''''''''''''''''''''''''''

DO WHILE NOT ATextStream.AtEndOfStream

''''''初始設定變數''''''''''''''''

strLine1=""

strLine2=""

strLine3=""

'''''''''''''''''''''''''''''''

ATextStream.SkipLine

ATextStream.Skip(11)

strLine1=Trim(ATextStream.ReadLine)

ATextStream.Skip(11)

strLine2=Trim(ATextStream.ReadLine)

ATextStream.Skip(5)

strLine3=Trim(ATextStream.ReadLine)

'End if

''''''''''將變數加入參數集'''''''''''''

ObjParamECom.value=strLine1

ObjParamCCom.value=strLine2

ObjParamAddr.value=strLine3

''''''''''操作結束''''''''''''''''''''

ObjComm.Execute() '運行命令

LOOP

response.write "<br>"+"匯入庫成功!<a href=dolist.html>[繼續匯入]</a><br>"

set Conn=nothing

set FSO=nothing

set ATextStream=nothing

%>

附:預存程序sp_AddMsg代碼

CREATE PROCEDURE dbo.sp_AddMsg --匯入國外公司資訊

(

@in_CompanyName Varchar(100), --公司名稱

@in_Address Varchar(200), --公司地址

@in_City Varchar(100), --公司所在城市

)

AS

SET NOCOUNT ON

BEGIN TRAN

INSERT INTO Tb_WCLibrary(

WC_CompanyName,

WC_CCompanyName,

WC_Address,

)

VALUES(

@in_CompanyName,

@in_CCompanyName,

@in_Address,

)

IF @@ERROR <> 0

BEGIN

ROLLBACK TRAN

RETURN -1

END

COMMIT TRAN

RETURN 0

SET NOCOUNT OFF

至此,全文內容講解結束,希望這篇文章能給讀者帶來一定的協助。




相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。