亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > 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:anonymous@cvs.sourceforge.net:/cvsroot/mdbtools login
  
  下一個步驟是查看 mdbtools 程序包:
  
  cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/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,我使用下面的命令:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美性开放视频| 欧美在线视频免费播放| 欧美超级乱淫片喷水| 日韩av中文在线| 欧美噜噜久久久xxx| 欧美综合在线第二页| 国产成人精品最新| 欧美裸体xxxx| 欧美成人精品一区二区三区| 日韩欧美中文在线| 九色精品美女在线| 555www成人网| 91国产精品电影| 国产成人精品免高潮费视频| 亚洲成色777777女色窝| 日韩精品中文字幕有码专区| 91精品久久久久久综合乱菊| 久久精品久久久久久国产 免费| 久久久国产视频91| 中文字幕精品—区二区| 亚洲永久在线观看| 92福利视频午夜1000合集在线观看| 国产亚洲视频在线| 欧美另类精品xxxx孕妇| 国产日韩综合一区二区性色av| 国内精品久久久久久久| 欧美精品免费在线| 欧美高清videos高潮hd| 最近2019中文字幕大全第二页| 国内揄拍国内精品| 亚洲精品国产成人| 久久久久久久久爱| 日韩精品在线电影| 国产成人精品久久亚洲高清不卡| 成人黄色av播放免费| 午夜精品在线视频| 国产精品免费久久久久久| 欧美日韩加勒比精品一区| 黄色一区二区在线| 亚洲日本成人女熟在线观看| 久久免费精品日本久久中文字幕| 国语对白做受69| 欧美日韩在线影院| 7777免费精品视频| 国产日韩欧美夫妻视频在线观看| 国内精品模特av私拍在线观看| 亚洲在线观看视频网站| 一本色道久久88亚洲综合88| 亚洲人午夜精品免费| 欧美一性一乱一交一视频| 国产日韩精品一区二区| 国产99久久久欧美黑人| 亚洲最大激情中文字幕| 日韩中文字幕精品视频| 久久久精品国产一区二区| 亚洲v日韩v综合v精品v| 国产一区二区三区网站| 国产欧美亚洲精品| 国产综合福利在线| 欧美激情中文字幕乱码免费| 久久久久久伊人| 日韩免费观看视频| 久99九色视频在线观看| 久久久久久久久久国产精品| 亚洲电影免费在线观看| 欧美成人小视频| 亚洲欧洲激情在线| 亚洲欧美日韩一区二区三区在线| 色综合老司机第九色激情| 久久久久久国产三级电影| 国内精品久久久久久中文字幕| 91欧美精品午夜性色福利在线| 欧美激情精品久久久久久变态| 亚洲视频免费一区| 最新91在线视频| 欧美精品免费在线观看| 欧洲中文字幕国产精品| 日韩免费电影在线观看| 国产专区欧美专区| 2020国产精品视频| 国产精品永久免费| 欧美亚洲伦理www| 68精品国产免费久久久久久婷婷| 亚洲欧美日韩综合| 一区二区亚洲精品国产| 日韩亚洲精品电影| 欧美巨大黑人极品精男| 欧美性xxxxxxxxx| 欧美黄色成人网| 日韩a**站在线观看| 蜜臀久久99精品久久久久久宅男| 国产亚洲精品va在线观看| 国产精品日韩在线观看| 亚洲女成人图区| 不卡av日日日| 欧美精品一区二区三区国产精品| 日韩精品免费视频| 欧美性猛交xxxx免费看漫画| 日韩免费av片在线观看| 国产成人涩涩涩视频在线观看| 色青青草原桃花久久综合| www.日本久久久久com.| 成人性生交大片免费观看嘿嘿视频| 国模视频一区二区三区| 国产精品久久久久aaaa九色| 国产一区二区三区视频在线观看| 亚洲美女av黄| 亚洲free性xxxx护士hd| 亚洲一区二区黄| 日韩黄色在线免费观看| 久久男人的天堂| 国产精品亚洲片夜色在线| 亚洲网站在线播放| 国内精品视频在线| 国产成人精品一区二区在线| 国产精品成人品| 欧美性猛交xxxx乱大交蜜桃| 欧美日韩国产影院| 国产精品久久久久久久久影视| 欧美超级免费视 在线| 成人亚洲欧美一区二区三区| 川上优av一区二区线观看| 日韩国产高清污视频在线观看| 尤物九九久久国产精品的分类| 久久偷看各类女兵18女厕嘘嘘| 欧美精品激情blacked18| 欧美成人精品在线观看| 国产一区二区三区18| 国产精品欧美一区二区| 亚洲色图25p| 亚洲视频在线视频| 性欧美长视频免费观看不卡| 日韩av在线不卡| 欧美激情精品在线| 日韩欧美中文字幕在线观看| 亚洲春色另类小说| 福利二区91精品bt7086| 午夜精品一区二区三区视频免费看| 国产精品久在线观看| 日韩中文字幕第一页| 中日韩午夜理伦电影免费| 黑人欧美xxxx| 国产精品久久久久久久久久三级| 日本午夜人人精品| 国产精品亚洲一区二区三区| 人九九综合九九宗合| 日韩精品在线视频观看| 久久天天躁狠狠躁夜夜爽蜜月| 国产精品九九九| 日韩av电影在线播放| 国产精品一香蕉国产线看观看| 国产精品欧美日韩| 日韩美女免费线视频| 日韩一区在线视频| 成人黄色网免费| 88xx成人精品| 国产午夜精品免费一区二区三区| 国产精品久久9| 日韩av大片免费看| 亚洲精品国产拍免费91在线| 欧美精品videofree1080p| 98精品在线视频| 欧美大肥婆大肥bbbbb| 日本一区二区不卡|