簡體   English   中英

將MySQL轉儲文件導入SQLite

[英]Import MySQL dump file to SQLite

這是我的用例:我有一個我無法訪問的服務器應用程序提供的sql轉儲文件,也沒有提供給該文件的MySQL數據庫的訪問權。 sql dump文件是一種普通的,通用的基本SQL語法,與phpmyadmin生成的語法相同。 我將此文本文件下載到Android設備中。 這些列只是“ int”或“ text”類型,而不是其他類型。 然后,我想將此文件導入到Android應用程序的SQLite數據庫中-基本上將文件讀入流中,然后一對一執行sql語句。 我的問題是:我是否可以在Java / Android中使用任何現有的類(無論是Android還是現有的知識),並將MySQL轉儲文件直接導入SQLite,以便自己節省一些時間來自己開發解析器? 同樣,這與外部工具無關。 謝謝!

你有shell訪問權限嗎? 您可以只使用cat file.sql | sqlite3 my.db cat file.sql | sqlite3 my.db盡管正如@VMai在注釋中提到的那樣,由於未進行預處理,由於特定於MySQL的SQL方言,這可能無法正常工作。

這是一個很好的博客文章 ,介紹了如何使用代碼。 如果您需要擔心MySQL專用的方言,則必須在代碼工作流中對其進行預處理或修改。

如果SQL無法直接從MySQL導入,則可以使用此處列出的工具之一對SQL進行預處理。

因為我遇到了這個問題,所以我認為我的發現和解決方案可能符合其他人的利益。 這里是:

  • MySQL在數據類型方面比SQLite豐富得多,因此不可能進行詳盡的代碼轉換實現。
  • 對於常見的數據類型,既​​適合作為內容表示形式的又是“整數”和“文本”。
  • 索引鍵具有不同的語法。
  • 總體而言,MySQL轉儲文件將需要過多的解析才能獲得較小的結果。

但是,即使我們無權訪問原始MySQL數據庫,解決方案也非常簡單,如下所示:

  • 將MySQL轉儲加載到您具有完全控制權的另一個臨時MySQL類型數據庫中。
  • 使用簡單的(PHP)腳本進行讀取,然后將MySQL表的內容寫入文本文件。
  • 使用另一個腳本(在我的情況下為Java,適用於Android)讀取此文本文件,並提供SQLite數據庫表。 假定先前已創建SQLite模式。

這是基本的,但是,請相信我,它最適合此類功能。 MySQL和SQLite的構造絕對不一樣!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM