2010-09-08 41 views
1

我不是MS Access的專家,我已經被賦予一個文本文件,基本上有超過十萬條記錄,並且被要求將該文本文件加載到MS訪問數據庫。就我所知,MySQL使用普通的Load text file命令將該文本文件上載到MySQL數據庫中,並按預期工作。但是,在Access 2003中,我會進入文件菜單以獲取外部數據並瀏覽文本文件,但在選擇文件後它不會執行任何操作。加載mysql轉儲或文本文件到微軟訪問2003

我已經嘗試通過SQL轉儲加載,我創建了一個表,切換到SQL查詢,但我不能複製粘貼所有這些插入命令在其中,事實上它說價值太大,無法進入而且由於記錄數量巨大,我無法一一粘貼。

任何一個幫助嗎?我會很感激。

回答

1

由於語法上的差異,您可能無法將mySQL轉儲直接導入到Access中。

一種方法是使用像HeidiSQL這樣的圖形工具將mySQL數據導出爲CSV,這應該很容易進入Access。

另一個想法是導入轉儲到MySQL,然後使用從Access訪問MySQL中ODBC Connector.

0

這是一個文本文件,如製表符分隔或逗號分隔的?

或者,這是一個sql命令的文件嗎?

訪問應該沒有問題從mySql文本導出的文件。但是,訪問不能直接使用sql命令的文本文件來插入數據。

您可以將導出的文件作爲製表符分隔,或者如果可能,甚至可以將訪問數據庫直接鏈接到mySql服務器,並使用一些附加/製作表。

另一種方法是在本地機器上安裝mySql,讓它讀取sql腳本,然後將其導出爲製表符或逗號文本文件,或者直接將訪問權限直接鏈接到本地​​運行的MySql實例,並使用附加查詢拉取這些數據。

但是,如果該sql轉儲具有由a分隔的每個sql命令;那麼簡單的VBA代碼就可以讀取這些sql命令。像這樣的東西可以工作:

Sub SqlScripts() 

    Dim vSql()  As String 
    Dim vSqls  As Variant 
    Dim strSql  As String 
    Dim intF  As Integer 

    intF = FreeFile() 
    Open "c:\sql.txt" For Input As #intF 
    strSql = Input(LOF(intF), #intF) 
    Close intF 
    vSql = split(strSql, ";") 

    On Error Resume Next 
    For Each vSqls In vSql 
     CurrentDb.Execute vSqls 
     Debug.Print "--->" & vSqls 
    Next 


    End Sub 

我建議使用製表符或逗號分隔的方法。當你做一個文件 - >獲取外部數據時,你應該看到一個嚮導啓動,允許導入一個文本(分隔)文件。

2

我不清楚什麼會導致您無法直接導入文本文件。您必須詳細說明您在Access中嘗試的內容以及出錯的位置。

但是,如果你已經有了MySQL中的數據並且想從那裏導入數據,那麼爲你的MySQL數據庫創建一個DSN,然後使用ODBC中的IMPORT指向DSN,然後你就可以導入從MySQL到Access的表。它也一次適用於多個表格。

+0

我今天需要這樣做,並且使用ODBC驅動程序將Access直接連接到MySQL工作(並且是比上次我們使用的容易出錯的csv導出導入過程更好的解決方案)。 – 2013-07-30 03:18:53