VBScript:我想获取文件的内容并使用每行的内容运行UPDATE语句

时间:2014-11-25 11:13:15

标签: vbscript

我已经建立了与数据库的连接。我想获取文件的内容并使用每行的内容运行UPDATE语句。

数据库连接

Option Explicit

Dim sDir : sDir = "\\Server1\Data"
Dim sCS  : sCS  = Join(Array( _
        "Provider=vfpoledb" _
      , "Data Source=" & sDir _
      , "Collating Sequence=general" _
), ";")
Dim oCN : Set oCN = CreateObject("ADODB.CONNECTION")
oCN.Open sCS
oCN.Close

文件

STAD     1
SECA     2
..

更新声明

对于这一行:

STAD     1

它会运行:

UPDATE B_SNAME.DBF SET SN_ANALSYS = 1 WHERE SN_ACCOUNT = STAD

我对VBScript和DBF非常陌生。

,我在Linux上编写一个小的Bash脚本来做这件事没有问题

有人可以提供一些有关我如何做到的信息,甚至是一个例子(那会很棒)? : - )

2 个答案:

答案 0 :(得分:1)

如果使用一个空格或任何单个字符(称为分隔符)分隔字段,则可以使用split函数分隔字段。你会得到这样的东西(我没有测试过这个)

Dim strSQL
Dim strFilename
Dim sConnString
Dim scs
Dim oCN
Dim oCmd
Dim fso
Dim f


strFilename = "C:\Temp\MyFile.txt"

sConnString  = "Provider=vfpoledb;Data Source=\\Server1\Data;Collating Sequence=general;"
strSQL = "UPDATE B_SNAME.DBF SET SN_ANALSYS = p1 WHERE SN_ACCOUNT = p2"

Set oCN = CreateObject("ADODB.CONNECTION")
oCN.Open sConnString

Dim oCmd
Set oCmd = CreateObject("ADODB.Command")


Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(strFilename)

Do Until f.AtEndOfStream
  sArray = Split(f.ReadLine, " ")
  oCmd.Parameters.Append oCmd.CreateParameter("p1", adChar, adParamInput, 4, sArray(1))
  oCmd.Parameters.Append oCmd.CreateParameter("p2", adChar, adParamInput, 8, sArray(0))
  oCmd.CommandText = strSQL
  oCmd.Execute
Loop

f.Close

If oCN.State = 1 Then oCN.Close

Set oCmd = Nothing
Set oCN = Nothing

大多数行都以制表符或逗号分隔,但没有理由不使用空格,只要它没有出现在您的数据中。

答案 1 :(得分:0)

这是一个简单的示例,用于读取数据文件并将每个字段转换为变量。这假设您的数据文件包含四个字符的帐户名,后跟五个空格,然后是一个数字。

Option Explicit

Const ForReading = 1
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")

Dim line
Dim sn_analsys
Dim sn_account
Dim dataFile
Set dataFile = fso.OpenTextFile("C:\SomeFolder\data.txt")
Do Until dataFile.AtEndOfStream
  line = dataFile.ReadLine
  sn_account = Left(line, 4)
  sn_analsys = Mid(line, 10)
  WScript.Echo "sn_account = " & sn_account
  WScript.Echo "sn_analsys = " & sn_analsys
  '
  ' Do whatever processing you need to do...
  '
Loop
dataFile.Close

如果您更改数据文件以将字段分隔一个空格,则可以使用Split获取每个字段。

Dim line
Dim fields
Dim dataFile
Set dataFile = fso.OpenTextFile("C:\SomeFolder\data.txt")
Do Until dataFile.AtEndOfStream
  line = dataFile.ReadLine
  fields = Split(line)
  WScript.Echo "sn_account = " & fields(0)
  WScript.Echo "sn_analsys = " & fields(1)
  WScript.Echo
  '
  ' Do whatever processing you need to do...
  '
Loop