:
Dim sTDir : sTDir = goFS.GetAbsolutePathName("..\data")
Dim sTbl1 : sTbl1 = "agree.txt"
Dim sFSpec : sFSpec = goFS.BuildPath(sTDir, sTbl1)
Dim sTbl2 : sTbl2 = "agree2.txt"
WScript.Echo "src file with spaces:"
WScript.Echo goFS.OpenTextFile(sFSpec).ReadAll()
Dim oTDb : Set oTDb = CreateObject("ADODB.Connection")
Dim sCS : sCS = Join(Array(_
"Provider=Microsoft.Jet.OLEDB.4.0" _
, "Data Source=" & sTDir _
, "Extended Properties=" & Join(Array(_
"text" _
), ";") _
), ";")
oTDB.Open sCS
WScript.Echo "trimmed automagically:"
WScript.Echo oTDb.Execute(Replace("SELECT * FROM [@T]", "@T", sTbl1)) _
.GetString(adClipString, , "|", vbCrLf, "")
:
[agree.txt]
Format=Delimited(^)
ColNameHeader=True
DecimalSymbol=.
CharacterSet=ANSI
TextDelimiter=None
Col1=AGREE CHAR
Col2=NAME CHAR
Col3=ADD1 CHAR
Col4=ADD2 CHAR
Col5=ADD3 CHAR
Col6=ADD4 CHAR
Col7=PCODE CHAR
Col8=BAL FLOAT
Col9=ARREARS FLOAT
그런 다음 당신은 당신의 데이터에 액세스 할 수 있습니다
출력 :
src file with spaces:
AGREE^NAME^ADD1^ADD2^ADD3^ADD4^PCODE^BAL^ARREARS
00010004000051162^MISS JENNIFER GRAY ^123 FAKE STREET ^ ^TOWN ^COUNTY ^POSTCODE ^004978.00^ 000188.72
trimmed automagically:
00010004000051162|MISS JENNIFER GRAY|123 FAKE STREET||TOWN|COUNTY|POSTCODE|4978|188,72
오른쪽 도구 을 사용하면 위와 같은 공백에는 아무런 문제가 없습니다.
은
이
sFSpec = goFS.BuildPath(sTDir, sTbl2)
If goFS.FileExists(sFSpec) Then goFS.DeleteFile sFSpec
Dim sSQL : sSQL = Replace(Replace(_
"SELECT * INTO [@T2] FROM [@T1]" _
, "@T1", sTbl1), "@T2", sTbl2)
WScript.Echo "Copy statement"
WScript.Echo sSQL
oTDb.Execute sSQL
WScript.Echo "QED: no spurious whilespace"
WScript.Echo goFS.OpenTextFile(sFSpec).ReadAll()
출력 추가, 깨끗한 사본을 얻으려면 :
Copy statement
SELECT * INTO [agree2.txt] FROM [agree.txt]
QED: no spurious whilespace
"AGREE";"NAME";"ADD1";"ADD2";"ADD3";"ADD4";"PCODE";"BAL";"ARREARS"
"00010004000051162";"MISS JENNIFER GRAY";"123 FAKE STREET";;"TOWN";"COUNTY";"POSTCODE";4978,00;188,72
드라이버가있는 schema.ini에
[agree2.txt]
ColNameHeader=True
CharacterSet=1252
Format=Delimited(;)
Col1=AGREE Char Width 255
Col2=NAME Char Width 255
Col3=ADD1 Char Width 255
Col4=ADD2 Char Width 255
Col5=ADD3 Char Width 255
Col6=ADD4 Char Width 255
Col7=PCODE Char Width 255
Col8=BAL Float
Col9=ARREARS Float
(독일어 로케일 기본값)를 추가합니다; 원래의 형식을 다시 만들
[agree2.txt]
Format=Delimited(^)
ColNameHeader=True
DecimalSymbol=.
CharacterSet=ANSI
TextDelimiter=None
Col1=AGREE CHAR
...
이 편집 :
QED: no spurious whilespace
AGREE^NAME^ADD1^ADD2^ADD3^ADD4^PCODE^BAL^ARREARS
00010004000051162^MISS JENNIFER GRAY^123 FAKE STREET^^TOWN^COUNTY^POSTCODE^4978.00^188.72
을 당신이 straighforward 방법으로 더 복잡한 작업을 해결할 수있는보다 정교한 SQL 문을 사용 및/또는 테이블 정의를 강화함으로써.
P.
봐 here,
Dim sSQL : sSQL = Replace(Replace(_
"SELECT * INTO [@T2] FROM [@T1]" _
, "@T1", sTbl1), "@T2", sTbl2)
당신이 궁금합니다 경우 (@ T1과 @의 T2 있습니다 하지 ADO 명령 매개 변수를하며 통화는 ADO가 다음 수정 문을보고 전에 적용) (교체 중첩되어) .
@ Ekkehard.Horner - 환상적인 답변, 명확하고 간결. 고맙습니다. – Danny