Это фактически двухэтапный процесс:
1 - список имен таблиц
Ваш первый запрос
SELECT *
FROM sqlite_master
WHERE type='table'
AND name NOT LIKE 'android_metadata'
AND name NOT LIKE 'sqlite_sequence'
возвращает список таблиц и выглядит следующим образом
type | name | tbl_name | rootpage | sql |
------+--------+----------+----------+------------------+
table | table1 | table1 | 2 | CREATE TABLE ... |
table | table2 | table2 | 2 | CREATE TABLE ... |
table | table3 | table3 | 2 | CREATE TABLE ... |
Вы можете просто вернуть имена вместо всех столбцов
SELECT name
FROM sqlite_master
WHERE type='table'
AND name NOT LIKE 'android_metadata'
AND name NOT LIKE 'sqlite_sequence'
Вам нужно прочитать каждую строку, чтобы получить имена таблиц
2 - Затем для каждой таблицы вынужно создать файл и запросить таблицу, например:
SELECT * FROM table1
Затем вставьте их в свой файл
КОД:
Я не тестировалэтот код, но вы должны быть в состоянии заставить его работать:
Этот первый метод выведет список имен таблиц
private static List<String> listTables(SQLiteDatabase db) {
List<String> tableNames = new ArrayList<>();
Cursor tableListCursor = db.rawQuery("SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'android_metadata' AND name NOT LIKE 'sqlite_sequence'", null);
while(tableListCursor.moveToNext()) {
// get the name of the table
tableNames.add(tableListCursor.getString(0));
}
tableListCursor.close();
return tableNames;
}
Этот второй метод выведет таблицу в файл
private static void dumpTableToCsvFile(SQLiteDatabase db, String tableName) {
try {
// Query the data in the table
Cursor cursor = db.rawQuery("SELECT * FROM " + tableName, null);
File file = new File(exportDir, tableName +".csv");
file.createNewFile();
CSVWriter csvWriter = new CSVWriter(new FileWriter(file));
// Write the table data to the file
csvWriter.writeNext(cursor.getColumnNames());
while(cursor.moveToNext()) {
String arrStr[] = { cursor.getString(0), cursor.getString(1) };
csvWriter.writeNext(arrStr);
}
// close cursor and writer
cursor.close();
csvWriter.close();
} catch (IOException e) {
// handle exception
}
}
И вы используете их так:
SQLiteDatabase db = dbhelper.getReadableDatabase();
List<String> tableNames = listTables(db);
for(String tableName : tableNames) {
dumpTableToCsvFile(db, tableName);
}