Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.02.21;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.53 MB
Время: 0.006 c
1-1214293069
dreamse
2008-06-24 11:37
2010.02.21
Перехват запуска приложения


4-1229186518
SCL
2008-12-13 19:41
2010.02.21
Как мне запретить завершение моего процесса из диспетчера задач?


2-1261409951
JohnKorsh
2009-12-21 18:39
2010.02.21
API для беспроводных сетей.


2-1261222865
yantux
2009-12-19 14:41
2010.02.21
Как работает знак := для рекордов?


2-1260787513
TRSteep
2009-12-14 13:45
2010.02.21
ComboBox и дополнительное поле





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский