我有一个sqback文件,代表sqlite db文件。我想从这个sqback文件中提取数据,即表名和内容,并将其转换为csv文件格式。我想用Java做到这一点。
** sqback文件在处理之前已经从android设备上传到了pc。所以我需要一个适合服务器端的解决方案。
有没有人有关于如何执行此类任务的任何线索?
答案 0 :(得分:1)
如果使用Android,您可以利用构建的SQLiteDatabase和SQLiteOpenHelper。您会找到所有所需的信息here。
解析完所有内容后,您可以使用File以您想要的方式导出为CSV。
编辑:所以基本上你需要做的就是通过读取字节来解析字节,这样就可以访问内容了。在某些情况下,您甚至不需要将它们转换为String,因为您可能只需要该字节的值。 (即:偏移: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循环。
最终你的方法是正确的,这是将字节输入String的方法。 (新字符串(b))。此外,第一个字符可能代表奇怪的符号,如果你看一下SQL的文件格式,这些是用于存储一些元数据的保留字节。 使用任何文本编辑器打开sqlite文件,并检查您看到的内容是否与代码中的内容相匹配。
答案 1 :(得分:1)
本网站指出了哪些额外的库可供使用,并提供了如何与sqlite文件交互的示例(http://www.xerial.org/trac/Xerial/wiki/SQLiteJDBC#Usage)
需要注意的重要事项:
1)确保包含使用当前类加载器加载sqlite-JDBC驱动程序。这是通过行
完成的 2)sqlite文件是一个db,即使它不在某个服务器上。因此,您仍然必须创建与文件的连接以与其进行交互。您必须打开连接并关闭连接。
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)您可以使用带有列索引或列标题键的get命令从ResultsSet中获取数据
rs.getString("qo")
希望有助于任何人遇到与我相同的问题