我有一个代表 sqlite db 文件的 sqback 文件。我想从这个 sqback 文件中提取数据,即表名和内容,并将其转换为 csv 文件格式。我想使用 Java 来做到这一点。
** sqback 文件在处理之前已经从 android 设备上传到 pc。所以我需要一个适合服务器端的解决方案。
有没有人对如何执行这样的任务有任何线索?
如果使用 Android,您可以利用内置的 SQLiteDatabase 和 SQLiteOpenHelper。你会在这里找到你需要的所有信息。
解析完所有内容后,您可以使用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 文件并检查您在其中看到的内容是否与您的代码中的内容匹配。
该网站指出要使用哪些额外的库,并提供如何与 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")
希望对遇到和我一样问题的人有所帮助