2011-09-07 290 views
0

我目前在MySQL中有一個數據庫,我想在MS Access中導入它。使用OBDC將.sql導入到MS Access

是否可以在保持所有關係不變的情況下執行此操作(即不導出到.csv或使用ODBC)?

我是這方面的noob,所以任何幫助,非常感謝。

謝謝。

回答

1

您需要解決兩個不同的問題:

  1. 創建與MySQL數據庫結構相匹配的結構的空MS Access數據庫。

  2. 從MySQL中提取數據並將其加載到MS Access中。

這並不容易,因爲不同的SQL數據庫提供不同的結構特徵,不同的數據類型等等。使用MySQL越複雜,在轉換過程中遇到的問題就越有可能發生(例如,Access根本不支持觸發器)。相反,如果您使用MySQL作爲簡單的數據存儲,您可能會發現轉換非常簡單。

要獲得與您的MySQL數據庫具有相同結構的MS Access數據庫,最好的方法是找到一個數據庫定義/圖表工具,它提供反向工程並支持MySQL和MS Access。使用它將您的MySQL數據庫逆向工程化爲數據庫圖表,然後將底層數據庫更改爲MS Access並使用該工具生成數據庫。

退房Dezign For Databases哪些(在紙上,無論如何)提供您需要這樣做的功能。

要傳輸數據,有許多工具。這種操作通常被稱爲ETL(提取,翻譯,加載)。

1

你的意思是SQL Server?一個好的起點可能是查看SQL Server集成服務(SSIS),它可以用來像這樣傳輸數據。

谷歌也將是有益的,檢查出的第一個結果:

http://support.microsoft.com/kb/237980

順便說一句,你說你的問題「.SQL」:一個.SQL文件是一個腳本文件,這可能做任何事情,從創建數據庫,插入數據,刪除表,刪除數據,或給予正確的權限,調用系統過程並重新啓動計算機,格式化驅動器,發送電子郵件..僅供參考,.SQL文件不是存儲格式由SQL Server使用。

+0

我在MySQL中使用SQLyog,如果有幫助。 – Pieter

+1

我假設你的意思是你已經將MySQL數據庫導出到描述數據庫結構和數據的'.sql'文件中。如果是這樣的話,那麼你就是SOL,因爲如果你試圖針對與MySQL不同的RDBMS運行'.sql',那麼不僅會訪問運行'.sql'文件,而且會由於SQL語法不同而出錯。 –

+0

要跟蹤上述情況 - 您可能想要試用http://www.convert-in.com/sql2acc.htm的試用版以獲取數據庫結構(包括FK),然後自行遷移數據。 –

-2

訪問:運行查詢。只要確保修改SQL代碼,因爲每個RDMS都有自己的sintaxis(儘管SQL是ANSI標準)。

0

儘管可以通過類似SQLyog的腳本將數據庫的模式腳本編寫爲腳本文件,但是您會發現從數據庫到數據庫(在您的情況下,MySQL不支持直接應用腳本)的語法不盡相同。

通過編輯腳本(可能通過程序自動執行,具體取決於生成的腳本大小)可以創建轉換腳本。我認爲使用ODBC來複製表格(和數據),然後手工提取和重新應用生成的腳本中的關係會更好。耗時,但也是我希望的一次性操作。

當兩個系統都是相同的數據庫時,有一些工具可以進行比較和腳本生成(TOAD for MySQL和RedGate Compare for Microsoft SQL),但它們不會跨數據庫工作(至少不是那些我知道)。

0

如果您創建ODBC DSN,則可以使用TransferDatabase從MySQL數據庫導入。您可以使用GET EXTERNAL DATA命令(或者A2007/A2010中的任何命令)手動執行此操作,並查看它的工作情況。它不會完全正確地獲取所有數據類型,但是您可以進行一些按摩,並且可能會更接近最適合的數據類型。

是否有某些原因,您不能直接鏈接到MySQL表並直接使用它們?也就是說,你爲什麼需要導入Access?

0

您可以嘗試使用此:Converting MS Access to MySQL with relationships

正常工作和出口的所有關係。

+0

請注意,[鏈接只回答](http://meta.stackoverflow.com/tags/link-only-answers/info)不鼓勵,所以答案應該是尋找解決方案的終點(而不是另一個引用的中途停留時間,隨着時間的推移它們會變得陳舊)。請考慮在此添加獨立的摘要,並將鏈接保留爲參考。 – kleopatra