2016-08-09 3 views
1

У нас есть приложение iOS, которое использует файлы sqlite для локального хранения данных. У нас есть приложение Rails, размещенное в heroku, которое мы хотели бы разместить в файлах sqlite, обрабатывать данные и вставлять записи в нашу базу данных PG.Прочтите файл sqlite с камнем sqlite3

Heroku не позволяет использовать sqlite вообще, и мы не можем установить драгоценный камень sqlite3. Мы просто хотим прочитать файлы sqlite и не нужно использовать sqlite как db в heroku.

Есть ли способ прочитать sqlite файлы на героку?

+0

Вы действительно хотите прочитать файл sqlite без использования sqlite? –

+0

Посмотрите на это: https://devcenter.heroku.com/articles/sqlite3 –

+0

Рассматривали ли вы возможность сброса данных в файл, а затем чтение этого файла? http://alvinalexander.com/android/sqlite-dump-backup-database-file-how –

ответ

0

Я вижу три возможности:

1) Вы можете дамп базы данных sqlite3 в файл, а затем импортировать содержимое в базу данных PostgreSQL в Heroku. Вы можете сбросить его в соответствии с инструкциями here. Для импорта вы можете написать задачу рейка или запустить программу для выполнения этой задачи в командной строке. Вы можете использовать db/seeds.rb для выполнения этой задачи.

2) Вы можете сбросить базу данных sqlite3 в файл и попытаться импортировать данные PostgreSQL непосредственно из этого файла. Я никогда не пробовал этого, и вы, вероятно, найдете некоторые проблемы. Форматы вывода иногда немного отличаются при переходе из одной базы данных в другую. Базы данных редко «100% -pure-SQL-совместимые».

ВАЖНО: В обоих случаях вы будете сбрасывать в среде разработки, а затем раздвинуть результаты Heroku.

3) Вы можете написать программу для «понимания» формата базы данных sqlite. Это означало бы переписывание sqlite, и вы должны проверить, действительно ли хотите поставить себя на столько проблем. Даже вы считаете, что эта задача стоит того времени и усилий, которые вы посвятите ей, подумайте также о том, что Heroku говорит here о хранении файлов в своей файловой системе. Это важное сообщение:

SQLite runs in memory, and backs up its data store in files on disk. 
While this strategy works well for development, Heroku’s Cedar stack has 
an ephemeral filesystem. You can write to it, and you can read from it, 
but the contents will be cleared periodically. If you were to use SQLite 
on Heroku, you would lose your entire database at least once every 
24 hours. 

Я также предлагаю вам взглянуть на эту статью here. Это может помочь вам сэкономить время и силы в следующий раз.

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

+1

Я закончил размещение приложения rails на другом vps и обработал там файлы sqlite, а затем отправил JSON в мое основное приложение heroku, после чего мы добавили записи в postgresql db. Благодарю. –

+0

Отлично, что вы его решили. И жаль, что не помогло. –

Смежные вопросы