麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > Access > 正文

舊 Microsoft Access 數據的新生

2024-09-07 19:05:08
字體:
來源:轉載
供稿:網友

  在計算機和軟件世界艱難地向前發展的過程中,存在的一個不幸的事實,有時我們發現自己必須丟棄舊的數據。 我們從一個字處理 Office 程序包轉移到另一個程序包,就發現舊的文檔再也打不開了。
  
  同樣的情況也發生在數據庫上。 一個小公司可能覺得將信息存儲在一個 PC 數據庫中就足夠了,但在該遷移信息時將發生什么? 我們可能很苦惱要丟掉有價值的信息,但的確經常扔掉這些信息。 不過,當時可能看起來不是非常主要并被丟棄的信息,有時可能會需要。
  
  我最近就碰到這樣一個問題。 我工作的一個社區機構有一個基于 PC 的應用程序,它帶有一個相當大的 Microsoft access 格式的會員數據庫。 已經編寫了一個來自第三方的用戶程序來與該數據庫一起工作,但隨后許可過期了,再沒有方法來獲取該軟件的更新。 碰巧,忽然又非常需要這些信息。 我們備份了舊的數據庫,并將之存儲在一個 linux 系統上。 在新的開放源代碼世界中,為我們提供了許多強大的數據庫(如 Linux 上的 Oracle 數據庫)。 一種選擇是購買一份 Microsoft Access 并創建一個應用程序,但這將把我們限制在同一個特定模型中,而這本來就已經使我們陷于困境。 此外,公司希望能夠從一個安全的服務器遠程訪問這些數據。
  
  再次依靠 Microsoft 不是我們希望的選擇。 Linux 將作為這個新的數據庫服務器的基礎,并且它將運行一個行業標準的 SQL 數據庫。 因此,假如我們著手取出限制在舊的 MDB 文件中的數據 — 而不依靠于安裝帶新的 Access 許可的 Windows 服務器(這樣將再次受限于一個單體系結構解決方案),那將如何?
  
  到處尋找解決困境的解決方案,我來到了 Brian Burns 的網站,并知道了他的 mdBTools 程序包,該程序包是命令行工具的一個集合還有一個 GUI,它的唯一的目的是提供從 Access 數據庫中取出信息方法。
  
  獲取和安裝 mdbtools
  您需要做的第一件事是獲取一份 mdbtools 程序包。 轉至 http://mdbtools.sourceforge.net/,您將找到源代碼和適用于幾種基于 RPM 的版本的 RPM 程序包。 從源代碼進行編譯非常簡單,包括提取到構建 5 個步驟。
  
   tar -xzvf mdbtools-0.5.tar.gz
   cd mdbtools-0.5
   ./configure
  make
   su -c "make install"
  
  還可能通過下載和從 CVS 進行構建獲得最新和最好的程序包。 這并不像它聽起來那么復雜。 從連接并匿名登錄 CVS 服務器開始。
  
  cvs -d:pserver:[email protected]:/cvsroot/mdbtools login
  
  下一個步驟是查看 mdbtools 程序包:
  
  cvs -z3 -d:pserver:[email protected]:/cvsroot/mdbtools co mdbtools
  
  注重前面的每一條命令都是完整的一行。 在輸入上面的命令之后,當下載進行時,您將看到一個包含該版本中的各種文件的列表在屏幕上逐行顯示。 當下載完成時,轉移到下載目錄(名稱為 mdbtools)并執行以下命令。
  
   ./autogen.sh --enable-sql --with-unixodbc=/usr/local
  make:
   su -c "make install"
  
  對 mdbtools 進行一些研究
  mdbtools 程序包自帶了一系列命令行工具以及一個 GUI,用于從 mdb 文件中處理和提取數據。 我將馬上說明這個 GUI,但首先我想向您介紹一些命令行工具。 這些工具中最基礎的是 mdb-ver,您可以用它來識別您要處理的 mdb 文件的類型。
  
   $ mdb-ver members.mdb
   JET3
  
  這種情況下的結果是 "JET3",它告訴我我的社區會員文件是基于 Access 97 應用程序的。
返回值是 "JET4",則是 Access 2000 或 Access XP 數據庫。 使用 mdb-tables 命令將開始出現稍微有趣一點的信息。
  
   $ mdb-tables members.mdb
   ActionTaken CaseMembers ContactFollowUp ContactReason ContactSource
   ContactStatus Donations Issues Location MemberInfo PersonContacted Status ToDo
  
  默認情況下,所有的數據庫表將轉儲到一行上。 為了分別列出(每行一個表),可以使用 -1 標記。 不過,一些表不會顯示;這些是系統表(以 Msys 開頭的表)。 假如您希望這些表也列出來,那么可以使用 -S 標記。
  
  上面的輸出為您提供了組成您的 Access 數據庫的各種表的具體分類。 有趣的是,我們實際上可以在數據庫上執行 SQL 查詢(盡管只能使用 SQL 的一個有限的子集),即使數據庫不再在一個 Microsoft 系統上運行。 這就是 mdb-sql 命令的用途。 要進入交互式的 SQL 解釋程序,可以輸入 mdb-sql,后面緊跟數據庫名稱。 您將看到 1 => 提示符,您可以在提示符處輸入單行或多行查詢。 當您完成輸入并且想運行查詢時,輸入 go,然后按 Enter 鍵。
  
   $ mdb-sql members.mdb
   1 => list tables
   2 => go
  
  在上面的例子中,我基本上重新創建了 mdb-tables 命令。 其不同之處是輸出限定在美觀的、帶有標題并且四周用虛線框起來的表中。 當調用 mdb-sql 時,您可以重載這一行為,用 -H 來取消標題,用 -p 來去除邊框。
  
   $ mdb-sql -H -p members.mdb
  
  您可以隨時通過輸入 quit 并按 Enter 鍵來退出 SQL 解釋程序。
  
  要創建一條查詢,您可以使用默認的交互模式或在一行上發送一條查詢。 在下面的例子中,我使用了另一條命令 — describe table 查詢,該命令讓我能夠更深入地挖掘數據庫的表的格式。
  
  
   $ echo "describe table Location" mdb-sql members.mdb
  
   +------------------------------+--------------------+----------+
   Column Name          Type        Size   
   +------------------------------+--------------------+----------+
   ID              Long Integer    4    
   Address1           Text        255   
   Address2           Text        255   
   Address3           Text        255   
   Phone             Text        50    
   Fax              Text        50    
   DefaultInd          Boolean       0    
   +------------------------------+--------------------+----------+
  
  為了便于使用腳本,還可以用 -I 標記從外部文件中導入查詢,以及用 -o 標記并指定一個文件名來將查詢輸出到一個文本文件中。
  
  利用這些簡單的 SQL 查詢,我們能夠了解到關于數據庫的布局和其相關的表的許多信息。 通過加上邊框的標題和美觀的顯示格式,我們可以導出到文本文件中,并利用 shell 腳本來處理結果。 實際上,假如您所需要只是您的舊數據的一些簡單的報表,那么以上操作就足夠了。 不過,假如您希望將數據庫移植到一個基于服務器的 SQL 數據庫(如 Oracle)中,那么 mdbtools 也可以在此為您提供幫助。 (當然,一旦您達到了這個目的您將如何處理數據就是一個完全不同的主題了。)
  
  取出數據
  取出數據至少有兩個步驟。 第一步是在您的服務器上創建一個新的數據庫和它相關的表。 第二步是加載數據。 利用上述示例,您可以獲得關于組成原始的 Access 數據庫的各種表的所有具體信息。 然后利用這些信息,您可以編寫必需的腳本來專門為您的數據庫逐個地重新創建這些表。 幸運的是,您不用太費力,因為 mdbtools 程序包也為此提供了一個工具。 它就是mdb-schema。 考慮到我的社區會員表包含了一些敏感信息,所以讓我用 Microsoft Access 自帶的練習數據庫 Northwind.mdb 來進行演示。
  
   $ mdb-schema Northwind.mdb
  
  結果是模式的一個文本文件,該文件以 DDL(數據定義語言)格式發送至標準輸出。 假如您想捕捉該輸出(非常有用)則務必將該輸出重定向到一個文件中。 DDL 輸出默認是 Access 格式(如以下示例所示)。
  
   DROP TABLE Customers;
   CREATE TABLE Customers
   (
    CustomerID           Text (10),
    CompanyName           Text (80),
    ContactName           Text (60),
    ContactTitle          Text (60),
    Address         Text (120),
    City          Text (30),
    Region         Text (30),
    PostalCode           Text (20),
    Country         Text (30),
    Phone          Text (48),
    Fax           Text (48)
   );  
  
  上面的輸出只顯示了一個表(為簡潔起見),現在正好可以告訴您,您可以利用 -T 標記來指定單個表(我將馬上演示這一操作)。
DDL 輸出的數據庫格式稱為后端。 這時支持五個不同的后端。 它們是 "access" — 代表 Microsoft Access;"sybase" — 代表 Sybase;"oracle" — 代表 Oracle;和 "postgres" 代表 PostgreSQL(以及在 CVS 代碼中的 "MySQL" — 代表 MySQL)。 因此,要為 SavedQueries 表創建 Oracle 格式的 DDL,我使用下面的命令:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 毛片在哪看 | 亚洲午夜免费电影 | 大胆在线日本aⅴ免费视频 美国黄色毛片女人性生活片 | 久久久99精品视频 | 久久影院在线观看 | 精品亚洲国产视频 | 亚洲第一成av人网站懂色 | 国产乱淫a∨片免费观看 | 免费男女视频 | 成人一级在线 | 国产妇女乱码一区二区三区 | 在线观看免费毛片视频 | 黄色午夜剧场 | 欧美精品亚洲人成在线观看 | 久久久久久久久成人 | wwwxxx免费视频 | 草草视频在线播放 | 国产精品亚洲欧美一级在线 | 亚洲无av | 久久国产精品久久久久 | 国产精品久久久久一区二区 | 免费一级欧美大片视频 | 欧美日韩在线中文字幕 | 黄色1级视频 | 成人黄色小视频网站 | 久久久久国产成人精品亚洲午夜 | 国产亚洲精品久久久久久网站 | 日韩黄色免费观看 | 成人福利视频在线 | 午夜偷拍视频 | 99re色| 免费a级作爱片免费观看欧洲 | 毛片在线看免费 | 国产一及毛片 | 欧美性精品videofree | 久久精品在线免费观看 | 亚洲日本韩国在线观看 | 久久精品视频69 | 国产日韩大片 | av老司机久久 | 色999国产 |