У меня есть база данных с большим количеством таблиц.И в одной из этих таблиц хранятся имена некоторых таблиц.
Я хотел бы экспортировать только те таблицы, имена которых в этой таблице содержат имена.
Например: StoreTable хранит именаA, B, C.
В моей базе данных есть таблицы A, B, D, E, F.
При экспорте метод экспортирует только таблицы A и Bпотому что их имя находится в StoreTable.
Я немного исследовал и заметил, что это можно сделать с помощью выбора внутри выбора, но я пока не знаком с SQLite.
Код, который я уже сделал, экспортирует все таблицы из базы данных, это ниже:
@TargetApi(Build.VERSION_CODES.M)
public void exportTableFiltered(SQLiteDatabase db, String tableName) {
if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
try {
//Query
Cursor cursor = db.rawQuery("SELECT * FROM \"" + tableName + "\"", null);
exportDir = new File (Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/EXPORTED/");
if (!exportDir.exists())
{
exportDir.mkdirs();
}
File file = new File(exportDir, tableName +".csv");
file.createNewFile();
CSVWriter csvWriter = new CSVWriter(new FileWriter(file.getAbsoluteFile(), true));
//Writes content into .CSV
while(cursor.moveToNext()) {
//just columm 1
String arrStr[] = { cursor.getString(1)};
csvWriter.writeNext(arrStr);
}
//Close
cursor.close();
csvWriter.close();
} catch (Exception e) {
Toast.makeText(this, "Catch 04: " + e.getMessage(), Toast.LENGTH_LONG).show();
}
}
else {
requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
}
Toast.makeText(getApplicationContext(), "CSV FILE GENERATED!!", Toast.LENGTH_SHORT).show();
}
Спасибо!