Как загнать таблицу из SQLite в .CSV?

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
Ответить
Аватара пользователя
Xroft
Сообщения: 38
Зарегистрирован: 10 май 2012, 10:11

Как загнать таблицу из SQLite в .CSV?

Сообщение Xroft » 11 сен 2012, 22:02

Доброго времени суток!
Благодаря соседней теме как прочитать данные из *.csv узнал как загнать данные в Базу :roll:
.... теперь собсно, стал вопрос как достать оттуда таблицу и загнать ее в .CSV :lol:
Тема очень актуальна.
Заранее ОГРОМНОЕ спасибо за хороший пример:)

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Как загнать таблицу из SQLite в .CSV?

Сообщение rezak90 » 11 сен 2012, 22:08

http://stackoverflow.com/questions/4632 ... ble-values

Второй ответ показывает как читать данные с sqlite и записывать их в csv.
R.id.team
Политика на форуме запрещена

Аватара пользователя
Xroft
Сообщения: 38
Зарегистрирован: 10 май 2012, 10:11

Re: Как загнать таблицу из SQLite в .CSV?

Сообщение Xroft » 11 сен 2012, 22:15

rezak90 писал(а):http://stackoverflow.com/questions/4632 ... ble-values

Второй ответ показывает как читать данные с sqlite и записывать их в csv.
Вот это наверно то что надо!!! :D :D :D Огромное спасибо, ща буду кодить....:)))

Аватара пользователя
Xroft
Сообщения: 38
Зарегистрирован: 10 май 2012, 10:11

Re: Как загнать таблицу из SQLite в .CSV?

Сообщение Xroft » 11 сен 2012, 22:47

А вообще, во что умеет экспортировать Android?
Основная цель - импорт из базы устройства через инет в 1С.
В принципе .... думаю ... CSV тут вполне хватит ... но хочется послушать мнения умных людей:)

Заранее спасибо!!!

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Как загнать таблицу из SQLite в .CSV?

Сообщение rezak90 » 11 сен 2012, 22:59

Если подробней опишите функционал то может и созреет какая то мысль. Потому что я не совсем понял что вам нужно. То что я понял: передаётся бд по http а потом как то её пихнуть в 1С))) каша, подробнее ТЗ нужно.
R.id.team
Политика на форуме запрещена

Аватара пользователя
Xroft
Сообщения: 38
Зарегистрирован: 10 май 2012, 10:11

Re: Как загнать таблицу из SQLite в .CSV?

Сообщение Xroft » 11 сен 2012, 23:03

rezak90 писал(а):Если подробней опишите функционал то может и созреет какая то мысль. Потому что я не совсем понял что вам нужно. То что я понял: передаётся бд по http а потом как то её пихнуть в 1С))) каша, подробнее ТЗ нужно.
ну по 1С есть свой программер:) втягивать будет он ... пока разговора не было, но скоро будет. Главное, как говорится, не ударить лицом в грязь:)

Вопрос как бы не конкретный, просто интересует во что еще можно выгрузить таблицу(цы) из SQLite под андроидом.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Как загнать таблицу из SQLite в .CSV?

Сообщение rezak90 » 11 сен 2012, 23:07

так вопрос по моему нужно ставить иначе, как удобней будет принимать эти данные? как передавать? Например можно json, можно вообще по-байтно, можно таким прекрасным средством protobuf - это всё если по и-нету. Если же какими то другими путями то уже размышлять нужно.
R.id.team
Политика на форуме запрещена

Аватара пользователя
Xroft
Сообщения: 38
Зарегистрирован: 10 май 2012, 10:11

Re: Как загнать таблицу из SQLite в .CSV?

Сообщение Xroft » 11 сен 2012, 23:22

Вот вот, тыкните носом пожалуйста где можно почитать про json и protobuf на русском:)
P.S. Я просто сам пока не знаю что мне надо будет:)

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Как загнать таблицу из SQLite в .CSV?

Сообщение rezak90 » 11 сен 2012, 23:54

protobuf:
https://developers.google.com/protocol- ... vatutorial
а здесь можно почитать про время сериализации и десериализации, что может быть важно для большого объёма инфы:
http://thejava.info/j2ee/45-other/82-protobuf-overview-
json:
http://www.json.org/java/
R.id.team
Политика на форуме запрещена

Аватара пользователя
Xroft
Сообщения: 38
Зарегистрирован: 10 май 2012, 10:11

Re: Как загнать таблицу из SQLite в .CSV?

Сообщение Xroft » 12 сен 2012, 03:48

rezak90 писал(а):http://stackoverflow.com/questions/4632 ... ble-values

Второй ответ показывает как читать данные с sqlite и записывать их в csv.
Все здорово, вот только все окультурил. Спасибо за ссылку, помогло.
В итоге код превратился в :

Код: Выделить всё

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();

        }
Надеюсь это кому то поможет.
Последний раз редактировалось Xroft 12 сен 2012, 03:49, всего редактировалось 1 раз.

Аватара пользователя
Xroft
Сообщения: 38
Зарегистрирован: 10 май 2012, 10:11

Re: Как загнать таблицу из SQLite в .CSV?

Сообщение Xroft » 12 сен 2012, 03:49

rezak90 писал(а):protobuf:
https://developers.google.com/protocol- ... vatutorial
а здесь можно почитать про время сериализации и десериализации, что может быть важно для большого объёма инфы:
http://thejava.info/j2ee/45-other/82-protobuf-overview-
json:
http://www.json.org/java/
Спасибо, обязательно почитаю

Аватара пользователя
neoksi
Сообщения: 712
Зарегистрирован: 26 июл 2012, 10:42
Контактная информация:

Re: Как загнать таблицу из SQLite в .CSV?

Сообщение neoksi » 12 сен 2012, 04:34

Извиняюсь, но мой мой мозг автоматом зацепился за возможность слома алгоритма.
Гипотетически, если в одном из полей БД в тексте будет использован знак ";", то произойдет сбой при передаче данных между источниками.
Думаю тут нужно предусмотреть подмену этого знака.

Аватара пользователя
Xroft
Сообщения: 38
Зарегистрирован: 10 май 2012, 10:11

Re: Как загнать таблицу из SQLite в .CSV?

Сообщение Xroft » 12 сен 2012, 05:10

neoksi писал(а):Извиняюсь, но мой мой мозг автоматом зацепился за возможность слома алгоритма.
Гипотетически, если в одном из полей БД в тексте будет использован знак ";", то произойдет сбой при передаче данных между источниками.
Думаю тут нужно предусмотреть подмену этого знака.
Да, вы правы на все 100%. Не очень удачный выбор сепаратора ... :D
Думаю что выбор сепаратора диктует экспортируемый текст.

razmus
Сообщения: 82
Зарегистрирован: 26 мар 2013, 10:47

Re: Как загнать таблицу из SQLite в .CSV?

Сообщение razmus » 17 ноя 2013, 10:27

Подскажите пожалуйста, как можно записать данные в CSV без использования библиотек?

Аватара пользователя
trew
Сообщения: 450
Зарегистрирован: 28 сен 2013, 17:34

Re: Как загнать таблицу из SQLite в .CSV?

Сообщение trew » 17 ноя 2013, 11:40

razmus писал(а):Подскажите пожалуйста, как можно записать данные в CSV без использования библиотек?
Запиши данные в текстовый файл, в формате csv, а затем переименуй файл из txt в csv.
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Как загнать таблицу из SQLite в .CSV?

Сообщение Foenix » 17 ноя 2013, 14:17

trew писал(а): Запиши данные в текстовый файл, в формате csv, а затем переименуй файл из txt в csv.
:P
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

razmus
Сообщения: 82
Зарегистрирован: 26 мар 2013, 10:47

Re: Как загнать таблицу из SQLite в .CSV?

Сообщение razmus » 18 ноя 2013, 11:37

Спасибо, код для истории, может кому понадобится.

Код: Выделить всё

    @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());
	    } 
	}

Ответить