Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.02.21;
Скачать: CL | DM;

Вниз

Программно ввести данные ТХТ в базу данных   Найти похожие ветки 

 
Aleks   (2009-12-17 15:50) [0]

Доброго времяни суток, Мастера подскажите, как, и как это правильно сделать.
Есть Данные, они в текстовом файле, стороняя программа пищет лог, мне необходимо занести, и переодически добавлять этот лог в базу данных. Разобрать строку я могу, но как их ввести, сохранить, проверить на совпадения не знаю. Может компонент есть какой? В базах я 0, прощу не пиннать, покрайней мере сильно.


 
clickmaker ©   (2009-12-17 15:54) [1]

> мне необходимо занести, и переодически добавлять этот лог
> в базу данных

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


 
Aleks   (2009-12-17 16:04) [2]

Да, база уже готова. В логе много нужной информации, но просматривать её в блокноте очень не удобно, а выбрать из неё (примерно 10 000 записей, и их всё больше), что то нужное не реально. Вот и решил всё это в БД занести.
Шефа у меня нет, просто хобби такое.


 
clickmaker ©   (2009-12-17 16:12) [3]

> Да, база уже готова

на чем?


 
Anatoly Podgoretsky ©   (2009-12-17 16:16) [4]

> Aleks  (17.12.2009 15:50:00)  [0]

Надо сделать постановку и выявить уникальность в данных. Кроме того 10 000 записей это вообще не объем, можно даже все удалять и поновому заливать в БД


 
Jeer ©   (2009-12-17 17:16) [5]


> Шефа у меня нет, просто хобби такое.


Тогда ручками, ножками, попой, мозгом..
Глядишь все и образуется :)

Для начала расскажи о логе ( что в нем ). Народ тут добрый , отзывчивый.
Быстро найдут нужную "кампаненту".


 
Aleks   (2009-12-17 18:08) [6]


> Для начала расскажи о логе ( что в нем ). Народ тут добрый
> , отзывчивый.Быстро найдут нужную "кампаненту".

Вот примерный текст лога:
Имя  год      Обл  гор   ул    №дом   №кв    №Этаж

Text:Integer:Text:Text:Text:Integer:Integer:Integer:


> на чем?

создавал так :BDE Admin.-- Стандартная, потом через Датабазу что в Delphi встроенная, Парадокс. По книге создавал.
А на чём она ....... не знаю, извините.


 
Aleks   (2009-12-17 18:10) [7]


> Надо сделать постановку и выявить уникальность в данных.
>  Кроме того 10 000 записей это вообще не объем, можно даже
> все удалять и поновому заливать в БД

База у меня пустая. Мне и нужно как то залить в неё данные из лог файла.


 
Anatoly Podgoretsky ©   (2009-12-17 19:12) [8]

> Aleks  (17.12.2009 18:08:06)  [6]

Дом и квартира не являются Integer, тип должен быть текстовый.
Уникальных полей у тебя нет, только вся совокупность записи.
БДЕ поддерживает текстовые базы (TextFiles), по крайней мере для чтения.


 
Aleks   (2009-12-17 23:17) [9]


> Дом и квартира не являются Integer, тип должен быть текстовый.
> Уникальных полей у тебя нет, только вся совокупность записи.
> БДЕ поддерживает текстовые базы (TextFiles), по крайней
> мере для чтения.

Это был примерный лог, если стоит Integer то цифры мне и нужны.
Если уникальные поля это те где звёздачка стоит, что при создании базы ставилась, то они подчти все такие.
Можт всё таки кто нибудь подскажет, как залить в ВД данные из лог файла.


 
sniknik ©   (2009-12-18 07:47) [10]

> Это был примерный лог
ну, ты и получил примерный ответ, делай его преобразование с учетом того, что ты замолчал и "телепатограммой" того чего АП из-за этого не понял/понял не так как "ты имел ввиду там есть" и получишь точный.

> Если уникальные поля это те где звёздачка стоит
а где "звёздачка" стоит в логе?

> Можт всё таки кто нибудь подскажет, как залить в ВД данные из лог файла.
да без проблем. заливай запросом (insert into), или открывай свой txt как таблицу и заливай позаписьно.


 
Anatoly Podgoretsky ©   (2009-12-18 08:55) [11]


> Это был примерный лог, если стоит Integer то цифры мне и
> нужны.
> Если уникальные поля это те где звёздачка стоит, что при
> создании базы ставилась, то они подчти все такие.
> Можт всё таки кто нибудь подскажет, как залить в ВД данные
> из лог файла.

Теперь еще раз и по русски и точно, а не примерно, если конечно ответа было недостаточно. Особенно про уникальные поля.

Насчет номера дома и цифр, чтоже ты будешь делать когда встретится дом 10а или квартира 10/2

По поводу как залить, тебе был дан ответ - с помощью провайдера/драйвера "TextFiles", а команда простая обычная INSERT INTO ... SELECT FROM ...


 
Aleks   (2009-12-18 12:13) [12]


> Теперь еще раз и по русски и точно, а не примерно, если
> конечно ответа было недостаточно. Особенно про уникальные
> поля.

Извини, что такое уникальные поля, как они создаются, и как определить уникальное это имя или нет.
> По поводу как залить, тебе был дан ответ - с помощью провайдера/драйвера
> "TextFiles", а команда простая обычная INSERT INTO ... SELECT
> FROM ...

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


 
Плохиш ©   (2009-12-18 12:17) [13]


> Ну не понимаю я, первый раз с BD, спасибо.

Хм, я, когда первый раз с чем-то, описание читаю обычно.


 
sniknik ©   (2009-12-18 13:26) [14]

> один цикл с описанием
цикл не нужен, достаточно одной таблет... команды, и тебе ее привели, а описание есть в хелпе.

> Хм, я, когда первый раз с чем-то, описание читаю обычно.
а я ему еще и следую... ;) пока не понимаю процесса обычно буквально.


 
Aleks   (2009-12-18 15:23) [15]

не чего не понял, INSERT INTO ... SELECT FROM ...  как этим пользоваться?
пример можно.


 
Германн ©   (2009-12-18 15:26) [16]


> не чего не понял ...  как этим
> пользоваться?

Книжку почитай.


 
Anatoly Podgoretsky ©   (2009-12-18 15:37) [17]

> Aleks  (18.12.2009 15:23:15)  [15]

Вместо троеточий подставь свои данные, подробности все равно в справке.


 
Aleks   (2009-12-18 16:23) [18]


> Книжку почитай.

Была бы толковая книга, я б почитал. Делаю по эл.книге, а там только создание базы и  выборка из неё данных. Ввод данных с клавиатуры, создание или удаление записи, с помощью  навигатора.


 
Sergey13 ©   (2009-12-18 16:37) [19]

> [18] Aleks   (18.12.09 16:23)

В
C:\Program Files\Borland\Delphi6\Demos\Db\TextData
есть пример. Я правда его не особо смотрел про что он, но по названию вроде похоже.


 
Aleks   (2009-12-18 16:47) [20]


> C:\Program Files\Borland\Delphi6\Demos\Db\TextDataесть пример.
>  Я правда его не особо смотрел про что он, но по названию
> вроде похоже.

к сожалению там просто BD с навигатором, из раздела, как связать bd с таблицей, и ни строчки кода.


 
sniknik ©   (2009-12-18 20:41) [21]

> и ни строчки кода.
ни фига ж себе, ни строчки... 461 строка, пример компонента наследника TDataSet написан для текста (простенький, но все же).
не то, что с запросом конечно... но почему бы и нет? можно и так сделать, типа "ход конем" - учимся писать компоненты для изучения работы базой. ага.


 
Aleks   (2009-12-18 21:02) [22]


> sniknik ©  

C:\Program Files\Borland\Delphi7\Demos\Db\TextDataесть пример
Может в этом вся разница, у меня так :

unit TextMain;

{ This project demonstrates a custom TDataSet implementation.
 See TextData.Pas for more info.  You will need to compile and
 install TextPKG.DPK before using this sample. }

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 TextData, ExtCtrls, DBCtrls, Grids, DBGrids, Db;

type
 TTextDataDemoForm = class(TForm)
   DataSource1: TDataSource;
   DBGrid1: TDBGrid;
   DBNavigator1: TDBNavigator;
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 TextDataDemoForm: TTextDataDemoForm;

implementation

{$R *.dfm}

end.


 
sniknik ©   (2009-12-18 21:07) [23]

пример вовсе не в том коде что ты привет, а в
> ... See TextData.Pas for more info ...


 
Aleks   (2009-12-18 21:12) [24]

Мастера я просил вас подсказать мне, как и как правильно, занести данные которые хронятся в текстовом файле в базу данных. Спасибо за дискусию.
Правда мне пару строк кода нужно было.
Table1.Insert; --Добавить новую запись
Table1.Edit;   --- Редактировать существующую

Table1.FieldAddress("Имя1");

Table1.Fields[1].Value:=MaskEdit1.Text;       цифры

//   ИЛИ

//Table1.FieldByName("Имя").AsString :=MaskEdit1.Text;   текст

Table1.Post;


 
sniknik ©   (2009-12-18 21:22) [25]

> как и как правильно
и тебе уже в который раз повторяют "insert into ... select ... from ... ", это гораздо правильнее (если есть возможность) чем по записьное добавление... раз в тыщу быстрее.


 
Aleks   (2009-12-18 21:28) [26]

ну так напишите пример, а то "insert into ... select ... from ... "
не понимаю я как этим пользоваться, с базами не работал ни когда.


 
Anatoly Podgoretsky ©   (2009-12-18 22:21) [27]


> Aleks   (18.12.09 16:47) [20]

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


 
Anatoly Podgoretsky ©   (2009-12-18 22:25) [28]


> Aleks   (18.12.09 21:12) [24]

Тебе надо АДО и провайдер JET - ISAM драйвер TextFiles
Вот к нему и можно делать запросы.


 
Anatoly Podgoretsky ©   (2009-12-18 22:26) [29]

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


 
Aleks   (2009-12-18 22:41) [30]

Вот что у меня получилось.
Правильно или нет но работает, правда медленно.
Может кто, что подскажет.

Имя  год      Обл  гор   ул    №дом   №кв    №Этаж

Text:Integer:Text:Text:Text:Text:Text:Integer:

procedure TForm1.Button1Click(Sender: TObject);
Var
i,p,p1,i1,i2:Integer;
S:String;
begin
Memo1.Lines.LoadFromFile("c:\Text.txt");
For i:=0 to  Memo1.Lines.Count-1 Do
 If "*"<>Memo1.Lines.Strings[i] Then
   Begin
     Table1.Insert;
      p:=Pos(":",Memo1.Lines.Strings[i]);
     Table1.Fields[0].Text:=Copy(Memo1.Lines.Strings[i],0,p-1);
     p1:= PosEx(":",Memo1.Lines.Strings[i],p+1);
     Table1.Fields[1].Value :=StrToInt(Copy(Memo1.Lines.Strings[i],p+1,p1
(p+1)));
        For i1:=2 To 6 Do
          Begin
             P:=p1;
             p1:= PosEx(":",Memo1.Lines.Strings[i],p+1);
             Table1.Fields[i1].Text:=Copy(Memo1.Lines.Strings[i],p+1,p1-(p+1));
         End;
    Table1.Post;
 End;
end;


 
Германн ©   (2009-12-19 01:37) [31]


> Aleks   (18.12.09 22:41) [30]
>
> Вот что у меня получилось.
> Правильно или нет но работает, правда медленно.


> sniknik ©   (18.12.09 21:22) [25]
>
> > как и как правильно
> и тебе уже в который раз повторяют "insert into ... select
> ... from ... ", это гораздо правильнее (если есть возможность)
> чем по записьное добавление... раз в тыщу быстрее.
>

Ещё раз. Найди хоть самую дешевую книжку по SQL, если встроенный в Дельфи аглицкий хелп (LocalSQL.hlp) читать не хочешь.


 
Aleks   (2009-12-19 08:01) [32]

всем спасибо. Тема закрыта



Страницы: 1 вся ветка

Текущий архив: 2010.02.21;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.018 c
6-1212600148
Real
2008-06-04 21:22
2010.02.21
TWebBrowser - организовать preview html-кода


2-1261124358
Burger
2009-12-18 11:19
2010.02.21
Удаление экземпляра объекта


4-1229418864
belmol
2008-12-16 12:14
2010.02.21
FTRAPI.dll ftrScanAPI.dll


15-1260806036
{RASkov}
2009-12-14 18:53
2010.02.21
3G Modem


2-1261080452
TComponent
2009-12-17 23:07
2010.02.21
Устойчивый фокус на TreeView