此代码:
db = "C:\Dokumente und Einstellungen\hom\Anwendungsdaten\BayWotch4\Neuer Ordner\baywotch.db5"
TextExportFile = "C:\Dokumente und Einstellungen\hom\Anwendungsdaten\BayWotch4\Neuer Ordner\Exp.txt"
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
cn.Open _
"Provider = Microsoft.Jet.OLEDB.4.0; " & _
"Data Source =" & db
strSQL = "SELECT * FROM tblAuction1"
rs.Open strSQL, cn, 3, 3
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.CreateTextFile(TextExportFile, True, True)
a = rs.GetString
f.WriteLine a
f.Close
生成制表符分隔文件,但不适合导入mysql。我希望它生成一个类似于访问宏生成的文件的文件,可以在这里看到:
http://www.yousendit.com/download/TTZtWmdsT01kMnVGa1E9PQ
vbscript生成的文件在这里:
http://www.yousendit.com/download/TTZtWmdsT00wVWtLSkE9PQ
我还想知道为什么文件大小相差50k左右。
编辑:vbscript文件的结果使用了记事本无法识别的换行符,因此上面看起来非常杂乱。宏似乎没有导出html代码,这解释了为什么它是一个较小的文件,但是vbscript似乎没有制表符分隔,因为它不会导入到mysql中。
编辑:在linux系统下文件看起来不错,所以它可能与windows处理有关。但它仍然不正确。
答案 0 :(得分:0)
这两个文件都包含看起来像制表符分隔的数据以及HTML代码(由某些MS Office应用程序生成,看起来很像)。 tblAuction1是否存储任何OLE对象?也许当您导出这些对象时,它正在导出文件内容?
答案 1 :(得分:0)
对我来说,这似乎是一个编码问题。我看到你在创建文本文件时传递了Unicode参数,但两个文件之间明显存在编码差异。
答案 2 :(得分:0)
这个项目的目标是什么?创建文件的目的是什么?如果您只是想将数据从Access移动到MySQL,为什么不直接用这样的东西
Const Access = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=C:\Dokumente und Einstellungen\hom\Anwendungsdaten\BayWotch4\Neuer Ordner\baywotch.db5"
Const SQLServer = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Data Source=.\SQLEXPRESS"
Dim arrFields
Set SQLConn = CreateObject("ADODB.Connection")
WITH SQLConn
.ConnectionString = SQLServer
.Open
End WITH
Set AccessConn = CreateObject("ADODB.Connection")
WITH AccessConn
.ConnectionString = Access
.Open
End WITH
Set SQLRS = CreateObject("ADODB.Recordset")
WITH SQLRS
.CursorType = 3
.LockType = 3
End WITH
Set AccessRS = CreateObject("ADODB.Recordset")
WITH AccessRS
.ActiveConnection = AccessConn
.CursorType = 3
.LockType = 3
End WITH
strSQL = "SELECT * FROM tblAuction1"
AccessRS.Open strSQL
If AccessRS.RecordCount <> 0 Then
AccessRS.MoveFirst
ReDim arrFields(AccessRS.Fields.Count)
Do Until AccessRS.BOF OR AccessRS.EOF
For i = 0 To AccessRS.Fields.Count - 1
If AccessRS.Fields(i).Type = 202 Then
arrFields(i) = Chr(39) & AccessRS.Fields(i).Value & Chr(39)
Else
arrFields(i) = AccessRS.Fields(i).Value
End If
Next
strSQL1 = "INSERT INTO {Table in mySQL} VALUES("
For j = 1 To UBound(arrFields) - 2
strSQL1 = strSQL1 & arrFields(j) & ","
Next
strSQL1 = strSQL1 & arrFields(UBound(arrFields) - 1) & ")"
SQLRS = SQLConn.Execute(strSQL1)
AccessRS.MoveNext
Loop
Else
MsgBox "No records found"
End If
这会将记录集返回的所有记录添加到SQLExpress数据库中的表中,根据您的需要进行调整(如果您的需求是将数据从一个数据库传输到另一个数据库)应该不难。