Скопируйте данные из файла CSV в файл Sqlite в Android - PullRequest
1 голос
/ 21 апреля 2019

Я хочу скопировать данные из файла CSV в файл SQLite для моей структуры таблицы android application.SQLite, т.е. столбцы отличаются от столбцов файла CSV.В файле CSV есть еще столбцы.Я пытаюсь использовать DB Browser для программного обеспечения SQLite.

Можно ли скопировать данные через это приложение или мне нужно написать какой-нибудь код для этого?Кто-нибудь может предложить, пожалуйста?

Ответы [ 2 ]

1 голос
/ 21 апреля 2019

Я хотел бы предложить использовать SQLite Studio для импорта данных CSV и создать файл базы данных SQLite из этого файла CSV. Вы можете найти подробности здесь . Вы также можете сделать это из аргумента командной строки, как показано в приведенной ссылке.

$ sqlite3 mydb // This creates a new database
.mode csv // Enable to import from the csv
.import c:/sqlite/city.csv cities // import a csv file and create a table having the column name same as found in the first row of your csv file

Получив базу данных SQLite, вы можете добавлять, удалять или изменять столбцы и их имена, используя запросы к базе данных.

После того, как вы подготовили базу данных, вы можете поместить этот файл базы данных в каталог ресурсов вашего проекта Android Studio и во время запуска приложения скопировать базу данных из каталога ресурсов в локальное хранилище, чтобы к ней мог получить доступ ваш файл. Android-приложение. Я прилагаю пример кода для копирования файла базы данных из каталога ресурсов во внутреннее хранилище.

private void copyFromAssetsAndCreateDatabase() {

    InputStream mInputStream;
    private String DB_PATH = "/data/data/" + "your.application.package.goes.here" + "/databases/";

    try {
        mInputStream = getApplicationContext().getAssets().open(YOUR_DATABASE_NAME);

        File dir = new File(DataHelper.DB_PATH);
        if (!dir.exists()) dir.mkdir();
        File f = new File(DataHelper.DB_PATH + YOUR_DATABASE_NAME);
        if (!f.exists()) {
            f.createNewFile();
        }

        OutputStream mOutput = new FileOutputStream(f);
        byte[] mBuffer = new byte[1024];
        int mLength;
        while ((mLength = mInputStream.read(mBuffer)) > 0) {
            mOutput.write(mBuffer, 0, mLength);
        }

        mOutput.flush();
        mOutput.close();
        mInputStream.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

Надеюсь, это поможет!

1 голос
/ 21 апреля 2019

Если столбцы в вашем CSV-файле не отображаются на столбцы в вашей таблице SQLite, то сначала нужно выполнить некоторое преобразование данных, то есть уменьшить количество столбцов до количества столбцов в вашей таблице и присвоить им соответствующие имена. Затем вы можете использовать встроенный импортер CSV для импорта данных.

  1. Откройте терминал и запустите приглашение sqlite.
  2. Установить режим csv

    sqlite> .mode csv

  3. Импортируйте данные из вашего CSV-файла с помощью следующей команды:

    sqlite> .import c:/path/to/your/file/use/forward/slashes destination_table_name

Это действительно хороший учебник. http://www.sqlitetutorial.net/sqlite-import-csv/

...