Экспорт файла с разделителями табуляции из базы данных доступа - PullRequest
0 голосов
/ 04 декабря 2008

Этот код:

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

Я также хотел бы знать, почему размеры файлов отличаются примерно на 50 КБ.

Редактировать: В результате в файле vbscript используются символы новой строки, которые не распознаются блокнотом, поэтому при просмотре вышеупомянутое выглядит значительно сложнее. Макрос, похоже, не экспортирует HTML-код, что объясняет, почему это файл меньшего размера, однако vbscript не выглядит как разделитель табуляции, так как он не будет импортирован в mysql.

Редактировать: файлы выглядят нормально в системе Linux, так что это может быть связано с обработкой Windows. Однако это все еще не правильно.

Ответы [ 3 ]

0 голосов
/ 04 декабря 2008

Для меня это похоже на проблему с кодировкой. Я вижу, что вы передаете параметр Unicode при создании текстового файла, но между этими файлами явно существует различие в кодировке.

0 голосов
/ 05 декабря 2008

Какова цель этого проекта? Какова цель создания файла? Если вы просто хотите переместить данные из 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, и вам не составит труда настроить их (если ваши потребности переносят данные из одной базы данных в другую).

0 голосов
/ 04 декабря 2008

Оба файла содержат то, что выглядит как разделенные табуляцией данные, а также HTML-код (сгенерированный некоторым приложением MS Office, по внешнему виду). Хранит ли tblAuction1 какие-либо OLE-объекты? Возможно, когда вы экспортируете эти объекты, вы экспортируете содержимое файла?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...