我有一個sqback文件來表示sqlite數據庫文件。我想從這個sqback文件中提取數據,即表名和內容,並將其轉換爲csv文件格式。我想用Java來做這件事。從sqlback格式文件中提取數據以轉換爲CSV
**在處理之前,sqback文件已經從android設備上傳到pc。所以我需要一個適合於服務器端的解決方案。
有沒有人有任何線索如何執行這樣的任務?
我有一個sqback文件來表示sqlite數據庫文件。我想從這個sqback文件中提取數據,即表名和內容,並將其轉換爲csv文件格式。我想用Java來做這件事。從sqlback格式文件中提取數據以轉換爲CSV
**在處理之前,sqback文件已經從android設備上傳到pc。所以我需要一個適合於服務器端的解決方案。
有沒有人有任何線索如何執行這樣的任務?
本網站指出了哪些額外的庫可供使用,並提供瞭如何與sqlite文件交互的示例(http://www.xerial.org/trac/Xerial/wiki/SQLiteJDBC#Usage)
重要的事情需要注意:
1)確保包括負載使用當前的類加載器的sqlite-JDBC驅動程序。這是通過行
2)sqlite文件是一個數據庫,即使它沒有坐在某個服務器上。所以你仍然必須創建一個到文件的連接來與它進行交互。並且您必須打開連接並關閉連接。 Connection connection = null; connection = DriverManager.getConnection("jdbc:sqlite:" + path); // path is a String to the sqlite file (sqlite or sqback) connection.close(); // after you are done with the file
3)信息可以通過使用SQL代碼查詢的文件中提取。這將返回類型的ResultSet的加工對象保存你的數據有關的查詢
Statement statement = connection.createStatement();
statement.setQueryTimeout(30);
ResultSet rs = statement.executeQuery("SELECT * FROM " + tblName);
4)從ResultsSet您可以使用帶有任意列索引或列標題密鑰get命令抓取數據 rs.getString("qo")
希望能幫助任何人有同樣的問題,因爲我有
如果使用Android,您可以利用構建的SQLiteDatabase和SQLiteOpenHelper。你會發現全部您需要的信息here。
通過使用File解析所有可以導出到CSV的方式。
編輯:所以基本上你需要做的是通過閱讀他們解析字節,並以這種方式訪問內容。在某些情況下,您甚至不需要將它們轉換爲字符串,因爲可能只需要字節的值。 (即:偏移:44長度:4描述:架構格式編號,支持的架構格式爲1,2,3和4)。 你可以隨時用任何HEX編輯器檢查你的值是否正確,甚至用任何類型的文本編輯器打開sqlite文件都會有所幫助。
讓我們從頭開始。首先,閱讀文件。兩種方法
這兩種方法都將分享最下面的代碼:
File file = new File("YOUR FILE ROUTE");
int len = 1024 * 512; //512KB
try {
fis = new FileInputStream(file);
} catch (FileNotFoundException e1) {
fis = null;
e1.printStackTrace();
}
byte[] b = new byte[len];
int bread;
try {
while((bread = fis.read(b, 0, len))!=-1)
{
if(parseBlock(b, bread)==1)
return;
}
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
的差異將越來越部分塊和解析它們之間(我猜這對你有用),並且整件事情只是放在:
fis.read(b, 0, fis.available);
而不是while循環。
最終你的方法是正確的,這就是獲取字節到字符串中的方式。 (新字符串(b))。此外,第一個字符可能代表奇怪的符號,如果您查看SQL的文件格式,則這些是用於存儲某些元數據的保留字節。 用任何文本編輯器打開sqlite文件,並檢查你在那裏看到的是否與你的代碼中出現的內容相匹配。
非常感謝何塞。我想我應該更具體一些。我剛剛更新了這個問題,以包括sqback文件從android設備上傳到PC的事實,因此解析需要發生在服務器端。 –
然後你需要開始閱讀字節:) 使用此作爲參考(http://www.sqlite.org/fileformat.html) 我建議使用FileInputStream來讀取文件。將讀取的字節塊設置爲2的倍數(大約1024Kb或512Kb往往是最合適的選項,以防文件達到此大小時),這很有趣。如果您根本沒有經驗,我可以舉一些示例代碼。 –
再次感謝何塞。我真的很感激。我會在中午之後給它一個閱讀和嘗試,並希望一切順利。如果我有更多問題,我會打這個線程。 「我是新來的,它已經塑造成真棒。 –