Возможен ли экспорт, sqlite3 в csv?
Да, это довольно простая операция, мы можем сделать это программно с помощью различных методов. Как и ответили здесь экспорт SQLite в CSV и здесь Экспорт базы данных SQLite в CSV-файл в android, а также здесь Как реализовать Экспорт SQLite в Excel / CSV-файл в android? и многие ответы и решения доступны на The StackOverFlow.
Но как с помощью команд sqlite3?
Если вы действительно хотите сделать это с помощью команд , ты можешь это сделать. Но это будет действительно удачный c способ, потому что команды выглядят простыми на терминале, но они действительно ужасны программно. Вам нужны привилегии суперпользователя или вам нужно установить приложение как системное приложение. Если вы действительно хотите это сделать, давайте начнем,
Во-первых, мы сможем правильно понять основы. Android запустите Linux ядро внизу. Теперь, если вам нужно запустить на нем свой процесс с привилегиями суперпользователя (запустите его как root), единственный способ выполнить ваш процесс - через командную строку, потому что это единственный способ, которым вы можете напрямую взаимодействовать с ядром. Также вам нужно использовать su перед выполнением любой команды.
Process process = Runtime.getRuntime().exec("su");
почти ничего не сделает sh. Он просто запросит привилегию супер использования с помощью диалога. Что вы можете сделать, это вместо того, чтобы просто выполнить su, вы можете выполнить свой процесс с помощью su следующим образом:
Process process = Runtime.getRuntime().exec(new String[] { "su", "-c", yourCommand});
Таким образом, ваши команды выглядят так:
Process process = Runtime.getRuntime().exec(new String[] { "su", "-c", "sqlite3 /data/data/your-package-name/databases/file.db", ".headers on",".mode csv","...and all other operations"});
- c Option
Среди наиболее часто используемых опций su есть - c, который указывает su выполнить команду, которая следует непосредственно за ней в той же строке. Такая команда выполняется как новый пользователь, и затем окно терминала или консоль, из которой был запущен su, немедленно возвращается к учетной записи бывшего пользователя после завершения выполнения команды или после закрытия любой запущенной программы.
Альтернативный вариант
Альтернативой вышеприведенному методу является еще один способ, который может работать - использовать командную строку для копирования приложения в каталог /system/app/
. Тогда ваше приложение будет автоматически запускаться с привилегиями root (так же, как системные приложения)
Какой способ предпочтительнее?
Мне лично нравится первый способ, потому что работа над Команды оболочки в приложении android не являются гибкими. Сейчас многие провайдеры блокируют команды su на уровне ядра, выполняемые из сторонних приложений.
Надеюсь, это помогает. Спасибо!