将SQL结果/记录直接写入另一个数据库?

时间:2015-05-04 20:46:03

标签: sql vbscript intersystems-cache

我有以下脚本成功读取数据库中的记录:

sDSN = MyDSN
sUsername = username
sPassword = password
sSQL ="Select TOP 1 * myTable"
sDSN = "DSN=" & sDSN & ";UID=" & sUsername & ";PWD=" & sPassword & ";"
Set sConnect = CreateObject("ADODB.Connection")
WScript.Echo "Opening connection to source..."
sConnect.Open sDSN
Set resultSet = sConnect.Execute(sSQL)

On Error Resume Next
resultSet.MoveFirst
Do While Not resultSet.eof
  WScript.Echo resultSet("ID") & "," & resultSet("SomeColumn") & "," & resultSet("SomeOtherColumn")
  resultSet.MoveNext
Loop
resultSet.Close
sConnect.Close
Set sConnect = Nothing

这很好用,输出如下内容:

  

1,值1,值2

所以我想要做的就是将其写回另一个数据库。我意识到我可以手动编写一个指定每列的查询,但我想知道是否有一些方法可以在一个简单的命令中插入resultset()

有人知道这是否可行?它是CACHÉ,因为有人总是问:)

2 个答案:

答案 0 :(得分:1)

在VBScript中,没有简单的方法。我不确定CACHE是什么或做什么,所以这并不会影响我的答案。

您需要做的是在结果集的每个循环上构建插入查询的文本。

dim InsertSQL = "insert into MyNewTable values (" & resultSet("ID") & "," & resultSet("SomeColumn") & ")"

答案 1 :(得分:1)

如果没有人有更好的答案,那么这种方法运作得相当好,无论表格如何都可重复使用

  tSQL = "INSERT INTO targetTable VALUES ("
  For i = 0 To resultSet.fields.Count
     tSQL = tSQL & resultSet(i)
     if i <> resultSet.fields.Count Then 
        tSQL = tSQL & ","
     end if
  Next
  tSQL = tSQL & ")"