Страница 1 из 1
Как загнать таблицу из SQLite в .CSV?
Добавлено: 11 сен 2012, 22:02
Xroft
Доброго времени суток!
Благодаря соседней теме
как прочитать данные из *.csv узнал как загнать данные в Базу
.... теперь собсно, стал вопрос как достать оттуда таблицу и загнать ее в .CSV
Тема очень актуальна.
Заранее ОГРОМНОЕ спасибо за хороший пример:)
Re: Как загнать таблицу из SQLite в .CSV?
Добавлено: 11 сен 2012, 22:08
rezak90
http://stackoverflow.com/questions/4632 ... ble-values
Второй ответ показывает как читать данные с sqlite и записывать их в csv.
Re: Как загнать таблицу из SQLite в .CSV?
Добавлено: 11 сен 2012, 22:15
Xroft
Вот это наверно то что надо!!!

Огромное спасибо, ща буду кодить....

))
Re: Как загнать таблицу из SQLite в .CSV?
Добавлено: 11 сен 2012, 22:47
Xroft
А вообще, во что умеет экспортировать Android?
Основная цель - импорт из базы устройства через инет в 1С.
В принципе .... думаю ... CSV тут вполне хватит ... но хочется послушать мнения умных людей:)
Заранее спасибо!!!
Re: Как загнать таблицу из SQLite в .CSV?
Добавлено: 11 сен 2012, 22:59
rezak90
Если подробней опишите функционал то может и созреет какая то мысль. Потому что я не совсем понял что вам нужно. То что я понял: передаётся бд по http а потом как то её пихнуть в 1С))) каша, подробнее ТЗ нужно.
Re: Как загнать таблицу из SQLite в .CSV?
Добавлено: 11 сен 2012, 23:03
Xroft
rezak90 писал(а):Если подробней опишите функционал то может и созреет какая то мысль. Потому что я не совсем понял что вам нужно. То что я понял: передаётся бд по http а потом как то её пихнуть в 1С))) каша, подробнее ТЗ нужно.
ну по 1С есть свой программер:) втягивать будет он ... пока разговора не было, но скоро будет. Главное, как говорится, не ударить лицом в грязь:)
Вопрос как бы не конкретный, просто интересует во что еще можно выгрузить таблицу(цы) из SQLite под андроидом.
Re: Как загнать таблицу из SQLite в .CSV?
Добавлено: 11 сен 2012, 23:07
rezak90
так вопрос по моему нужно ставить иначе, как удобней будет принимать эти данные? как передавать? Например можно json, можно вообще по-байтно, можно таким прекрасным средством protobuf - это всё если по и-нету. Если же какими то другими путями то уже размышлять нужно.
Re: Как загнать таблицу из SQLite в .CSV?
Добавлено: 11 сен 2012, 23:22
Xroft
Вот вот, тыкните носом пожалуйста где можно почитать про json и protobuf на русском:)
P.S. Я просто сам пока не знаю что мне надо будет:)
Re: Как загнать таблицу из SQLite в .CSV?
Добавлено: 11 сен 2012, 23:54
rezak90
Re: Как загнать таблицу из SQLite в .CSV?
Добавлено: 12 сен 2012, 03:48
Xroft
Все здорово, вот только все окультурил. Спасибо за ссылку, помогло.
В итоге код превратился в :
Код: Выделить всё
private void exportTheDB() throws IOException
{
String fil = "myexp.csv";
String encoding="Windows-1251";
try { Log.d(TAG, "Траим .....");
FileOutputStream fOut = openFileOutput(fil, Context.MODE_WORLD_READABLE);
OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut, encoding);
Log.d(TAG, "Пишем .....Шапку ");
myOutWriter.append("_id;company;name;summa;type;date_time;confirm");
myOutWriter.append("\n");
Cursor zero = mDbHelper.fatchAllOrderHd();
startManagingCursor(zero);
Log.d(TAG, "Выгружаем .............................. ");
if (zero != null) {
if (zero.moveToFirst()) {
do {
String _id = zero.getString(zero.getColumnIndex("_id"));
String company = zero.getString(zero.getColumnIndex("company"));
String name = zero.getString(zero.getColumnIndex("name"));
String summa = zero.getString(zero.getColumnIndex("summa"));
String type = zero.getString(zero.getColumnIndex("type"));
String date_time = zero.getString(zero.getColumnIndex("date_time"));
String confirm = zero.getString(zero.getColumnIndex("confirm"));
Log.d(TAG, _id +" "+ company +" "+ name +" "+ summa +" "+ type +" "+ date_time +" "+confirm);
myOutWriter.append(_id+";"+company+";"+name+";"+summa+";"+type+";"+date_time+";"+confirm);
myOutWriter.append("\n");
}
while (zero.moveToNext());
}
zero.close();
myOutWriter.close();
fOut.close();
}
} catch (SQLiteException se)
{
//Log.e(getClass().getSimpleName(),"Could not create or Open the database");
}
finally {
// sampleDB.close();
}
Надеюсь это кому то поможет.
Re: Как загнать таблицу из SQLite в .CSV?
Добавлено: 12 сен 2012, 03:49
Xroft
Спасибо, обязательно почитаю
Re: Как загнать таблицу из SQLite в .CSV?
Добавлено: 12 сен 2012, 04:34
neoksi
Извиняюсь, но мой мой мозг автоматом зацепился за возможность слома алгоритма.
Гипотетически, если в одном из полей БД в тексте будет использован знак ";", то произойдет сбой при передаче данных между источниками.
Думаю тут нужно предусмотреть подмену этого знака.
Re: Как загнать таблицу из SQLite в .CSV?
Добавлено: 12 сен 2012, 05:10
Xroft
neoksi писал(а):Извиняюсь, но мой мой мозг автоматом зацепился за возможность слома алгоритма.
Гипотетически, если в одном из полей БД в тексте будет использован знак ";", то произойдет сбой при передаче данных между источниками.
Думаю тут нужно предусмотреть подмену этого знака.
Да, вы правы на все 100%. Не очень удачный выбор сепаратора ...
Думаю что выбор сепаратора диктует экспортируемый текст.
Re: Как загнать таблицу из SQLite в .CSV?
Добавлено: 17 ноя 2013, 10:27
razmus
Подскажите пожалуйста, как можно записать данные в CSV без использования библиотек?
Re: Как загнать таблицу из SQLite в .CSV?
Добавлено: 17 ноя 2013, 11:40
trew
razmus писал(а):Подскажите пожалуйста, как можно записать данные в CSV без использования библиотек?
Запиши данные в текстовый файл, в формате csv, а затем переименуй файл из txt в csv.
Re: Как загнать таблицу из SQLite в .CSV?
Добавлено: 17 ноя 2013, 14:17
Foenix
trew писал(а):
Запиши данные в текстовый файл, в формате csv, а затем переименуй файл из txt в csv.

Re: Как загнать таблицу из SQLite в .CSV?
Добавлено: 18 ноя 2013, 11:37
razmus
Спасибо, код для истории, может кому понадобится.
Код: Выделить всё
@SuppressLint("NewApi")
public void writeToFile(String data) {
final File DATABASE_DIRECTORY = new File(
Environment.getExternalStorageDirectory(), "ImportExport");
final File PATH = new File(DATABASE_DIRECTORY,"log.csv");
try (BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(PATH, true)))) {
bw.append(data+ "\r\n");
}
catch (IOException e) {
Log.e("Exception", "File write failed: " + e.toString());
}
}