Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Дельфи+IB+TXT, как загнать текстовые файлы через дельфи 
:(
    Опции темы
molchaliviy
Дата 7.5.2009, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 22.2.2006
Где: ХМАО-Югра

Репутация: нет
Всего: 2



Смысл в чем - есть куча текстовиков от 1Мб до 450Мб размера (файлы с логами) от 1 до 600000 тысяч строк и их нужно обработать 
как и чем обрабатывать уже загруженные данные в таблицу я разберусь а вот как все это сырое закинуть в базу для обработки и хранения не наю

на форуме искал но чет ни чего подобного не нашел все только для экселя 
да чуть не забыл разделитель в файлах разный в одних таб в других запятая(буду переделыывать на таб но позже)

все мозги сломал - помогите !!!!


PM MAIL WWW ICQ   Вверх
Данкинг
Дата 7.5.2009, 22:25 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



А в чём проблема- открывай файл, считывай построчно, парси строку согласно столбцам таблицы БД, и заноси эту таблицу.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Akella
Дата 7.5.2009, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Цитата(molchaliviy @  7.5.2009,  21:25 Найти цитируемый пост)
(буду переделыывать на таб но позже

вот когда переделаешь, тогда приходи
а так... может при импорте получится полная каша. 
Нужно чётко быть уверенным, какой используется разделитель.

Ну так, по теме. Загоняешь всё в TStringList. Делаешь цикл по TStringList`у, по строкам. Внутри этого цикла по строкам организовываешь цикл по полям (столбцам).

Это элементарно. Но я уже баиньки хочу, если тебе не помогут то, утром постараюсь показать. Но 2 цикла - это же просто.
Может тебе даже до утра дадут готовый код, там не много. Не я бы готовый код не давал.
Ты лучше покажи, как делаешь и что не получается, а тебя здесь подправят smile

Добавлено @ 22:53
Цитата(molchaliviy @  7.5.2009,  21:25 Найти цитируемый пост)
450Мб размера

весьма большой размер, может придётся хитрить.

Это сообщение отредактировал(а) Akella - 8.5.2009, 08:34
PM MAIL   Вверх
Deniz
Дата 8.5.2009, 05:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 8
Всего: 44



molchaliviy, предлагаю посмотреть в сторону внешних таблиц.


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Akella
Дата 8.5.2009, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Что-то вроде такого. Дальше сам додумай
Код

Var
 s, g : TStringList;
 i, t:integer;
 d: TDataSet;
begin
//здесь создаём стринглисты (код я опустил)


//загружаем
 s.LoadFromFile('file_name');

 for I := 0 to s.Count - 1 do begin
   //добавляем запись в таблицу
   d.Append;
   //запихиваем все поля в другой стринглист
   //в этом стринглисте будут поля только текущей записи
   g.Text := StringReplace(s[i], #9, #13, [rfReplaceAll, rfIgnoreCase]);
   //в цикле по стринглисту присваиваем поляем значения
   for t := 0 to g.Count - 1 do
    d.FieldByName('pole1').Value := g[t];


   d.Post;
 end;



Если данных очень много, то можно через ReadLn

Код

      AssignFile(t, PChar(od1.FileName));
      Reset(t);


в цикле
          Readln(t, s);
         ShowMessage(s);//здесь одна строка файла


PM MAIL   Вверх
lukash256
Дата 8.5.2009, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 23.7.2007
Где: Гомель/Беларусь

Репутация: нет
Всего: нет



имхо через стринглист нестоит. ибо загружать 450мб в стринлист - многовато. читаешь по записи (от таба до таба или запятой) и записываешь в базу типо 2 вариант от Акеллы.
как парсить - другов вопрос. в VB есть специальный толи класс толи функция, есть ли оналог в дельфях хочу спросить у вас, товарищи.
PM MAIL ICQ   Вверх
Akella
Дата 8.5.2009, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Цитата(lukash256 @  8.5.2009,  12:44 Найти цитируемый пост)
как парсить

я уже написал
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0667 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.