type asp text vbscript ado adodb

asp - VBScript para formatear/corregir correctamente un archivo de texto delimitado?



adodb.stream vb6 (1)

Al trabajar con archivos de texto ADO, debe comenzar con las definiciones de tablas en el archivo schema.ini correspondiente:

[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

Entonces puedes acceder a tus datos:

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, "" )

salida:

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

Como puede ver, no hay ningún problema con los espacios espurios, si usa la herramienta correcta.

Para obtener una copia limpia, solo agrega

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()

salida:

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

El controlador agregará

[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

(configuración predeterminada de configuración regional alemana) a schema.ini; editar esto para

[agree2.txt] Format=Delimited(^) ColNameHeader=True DecimalSymbol=. CharacterSet=ANSI TextDelimiter=None Col1=AGREE CHAR ...

para volver a crear su formato original:

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

Al utilizar sentencias SQL más elaboradas y / o mejorar las definiciones de tabla, puede resolver tareas más complejas de forma directa.

PD

Mira aquí , si

Dim sSQL : sSQL = Replace(Replace( _ "SELECT * INTO [@T2] FROM [@T1]" _ , "@T1", sTbl1), "@T2", sTbl2)

hace que te preguntes (@ T1 y @ T2 no son parámetros de comando ADO; las llamadas anidadas Reemplazar () se aplican antes de que ADO vea la instrucción entonces modificada).

¿Alguien me puede ayudar a formatear / formatear correctamente un archivo de texto delimitado con VBScript?

Tengo un archivo de texto que está delimitado de la siguiente manera:

AGREE^NAME^ADD1^ADD2^ADD3^ADD4^PCODE^BAL^ARREARS 00010004000051162^MISS JENNIFER GRAY ^123 FAKE STREET ^ ^TOWN ^COUNTY ^POSTCODE ^ 004978.00^ 000188.72

Todos los datos contienen espacios iniciales y finales que deben eliminarse. Solo tengo VBScript disponible para hacer esto.

Intenté utilizar ADO GetStrings, pero se obtuvieron resultados inconsistentes debido a los espacios iniciales y finales.

¿Alguien puede ofrecer alguna sugerencia o alternativa?

Gracias