Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

чтени из файла, запись в БД

7.1K
16 августа 2005 года
redevice
5 / / 03.06.2004
Есть задача: из текстового файла нужно записать данные в таблицу БД Access.
В файле первые две строки не нужны (заголовки), а следующие строки с данными нужно считать. данные разделены табуляторами (10 столбцов).
И еще та же самая задача, только читать нужно все файлы в указанной директории.
Кто-нибудь, подскажите вариант решения.
1
17 августа 2005 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by redevice
Есть задача: из текстового файла нужно записать данные в таблицу БД Access.
В файле первые две строки не нужны (заголовки), а следующие строки с данными нужно считать. данные разделены табуляторами (10 столбцов).
И еще та же самая задача, только читать нужно все файлы в указанной директории.
Кто-нибудь, подскажите вариант решения.


так что подсказать то? Как читать данные из файла? Как писАть в базу? Или как получить файлы в указанной директории?
Простейшее решение (правда не самое эффективное)читать стороку из файла и парсить ее начиная с конца. Так же, не плохо бы устанавливать флаг, как вести себя в случае ошибок, вести список строк, которые считаны без ошибок и список непрочитаных строк - вобщем навороты. Когда столбцы получены - инсертишь их в базу. Можно делать это сразу, можно через определенное кол-во строк. С файлами тоже самое, сначала получаешь список файлов, затем с каждым выполняешь нужную операцию, последовательно или в разных потоках.

7.1K
17 августа 2005 года
redevice
5 / / 03.06.2004
Цитата:
Originally posted by kot_
так что подсказать то? Как читать данные из файла? Как писАть в базу? Или как получить файлы в указанной директории?
Простейшее решение (правда не самое эффективное)читать стороку из файла и парсить ее начиная с конца. Так же, не плохо бы устанавливать флаг, как вести себя в случае ошибок, вести список строк, которые считаны без ошибок и список непрочитаных строк - вобщем навороты. Когда столбцы получены - инсертишь их в базу. Можно делать это сразу, можно через определенное кол-во строк. С файлами тоже самое, сначала получаешь список файлов, затем с каждым выполняешь нужную операцию, последовательно или в разных потоках.


как записать в бд я примерно знаю, а вот как читать из файла построчно данные, и то что между табуляторов записывать в переменные, вот что нуна. И как пропустить первые две строки файла?

1
17 августа 2005 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by redevice
как записать в бд я примерно знаю, а вот как читать из файла построчно данные, и то что между табуляторов записывать в переменные, вот что нуна. И как пропустить первые две строки файла?



Код:
String stGetLine="",stParam = "";
TStringList *Params = new TStringList;
ifstream in("some.file");
char buffer[MAX_SIZE];
int count = 0;

while(in){
in.getline(buffer,MAX_SIZE);
if(count > 1){
 //
 stGetLine = buffer;
 while(stGetLine.Leigth()){
  stParams = stGetLine.SubStr(stGetLine.LastDelimeter("\t")+1,stGetLine.Leigth());
Params->Add(stParams);
stGetLine = stGetLine.Delete(stGetLine.LastDelimeter("\t"),stGetLine.Leigth());
 }
}
++count;
}
...
...
delete Params;
7.1K
17 августа 2005 года
redevice
5 / / 03.06.2004
УРЛАЙТ РАБОТАЕТ!!! БОЛЬШОЙ РЕСПЕКТ!!!
299
17 августа 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by redevice
УРЛАЙТ РАБОТАЕТ!!! БОЛЬШОЙ РЕСПЕКТ!!!



Какой еще респект??? Тут извращения сплошные.

У TStringList есть свойство Delimiter туда пихъаем разделитесь.
DelimitedText - сюда текст

И все=) И стринг содержит список строк.

1
17 августа 2005 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by 3D Bob
Какой еще респект??? Тут извращения сплошные.

У TStringList есть свойство Delimiter туда пихъаем разделитесь.
DelimitedText - сюда текст

И все=) И стринг содержит список строк.


Ну по большому счету использовать ТАК TStringList - практически в любом виде изврат. С разделителем ли, без разделителя... Да и чтение по сторокам тоже не самый эффективный метод - особенно без контроля размеров буфера и реального размера строки+количества разделителей в строке и пр. По уму должена быть функция читающая данные, функция разбиркающая прочитанное как минимум и функция которая все это пихает в массив параметров.

1
17 августа 2005 года
kot_
7.3K / / 20.01.2000
Но в примере я сознательно использовал строки и в строковый массив загонял уже обработанную строку. Хотя бы для того, что бы на этапе отладки можно было бы легко посмотреть ее текущее значение.
7.1K
18 августа 2005 года
redevice
5 / / 03.06.2004
не спорьте , главное все работает, об оптимизации пока речь не идет, позже разберусь, почитаю, а на данном этапе и это хорошо, а то задолбало вносить данные методом copy/paste.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог