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

Вниз

Как добавить информацию в базу из файла   Найти похожие ветки 

 
ShadowSnake ©   (2002-12-27 09:27) [0]

Как добавить информацию в базу из файла?


 
Reindeer Moss Eater   (2002-12-27 09:35) [1]

Выполнить INSERT, UPDATE например


 
Sergey13 ©   (2002-12-27 09:37) [2]

2ShadowSnake © (27.12.02 09:27)
>Как добавить информацию в базу из файла?
Из какого файла? И какую информацию?


 
Дмитрий К.К. ©   (2002-12-27 09:44) [3]


> ShadowSnake © (27.12.02 09:27)
> Как добавить информацию в базу из файла?


Минимум информации нам дашь - минимум получишь.


 
ShadowSnake ©   (2002-12-27 09:44) [4]

Имеется текстовый файл примерно такого содержания:

............
192.168.99.1
192.168.99.2
192.168.99.3
192.168.99.4
192.168.99.5
............

Из него читаю в массив. Затем этот массив надо запихнуть в базу данных.


 
Reindeer Moss Eater   (2002-12-27 09:46) [5]

Массив как единое целое, или его элементы?


 
Alexander_K   (2002-12-27 09:51) [6]

Читаешь файл, полученные данные вставляешь в SQL-запрос и делаешь ExecSQL.


 
ShadowSnake ©   (2002-12-27 10:01) [7]

2Reindeer Moss Eater
Как целое.

2Alexander_K
А как построить SQL запрос таким образом?

Да, может кто подскажет литературку по языку SQL? Желательно в сети.


 
Alexander_K   (2002-12-27 10:03) [8]

Ты сначала лучше напиши: какие данные у тебя в файле, структуру таблицы и что в каких полях ты хочешь видеть!


 
ShadowSnake ©   (2002-12-27 10:08) [9]

192.168.99.254 oleg 23/Dec/2002:21:15:12 http://counter.rambler.ru/top100.cnt?294098 200 936

вот такие данные. я их считал и рассовал по массивам. за это респект Reindeer Moss Eater :-)

таблица :
ip :: name :: date :: referer :: send :: recive


 
Alexander_K   (2002-12-27 10:18) [10]

Пишешь запрос:
insert into tablename values(:ip,:name,:date,:referer,:send,:recive) и в цикле подставляешь значения из массива в параметры и делаешь ExecSQL. Все это делаешь пока не конец массива.


 
ShadowSnake ©   (2002-12-27 10:52) [11]

Query1.SQL.Add("INSERT INTO analiz_loc VALUES (i, ip[i], name[i], date[i], referer[i], send[i], rec[i]);");

что не так?


 
passm ©   (2002-12-27 10:56) [12]

ShadowSnake © (27.12.02 10:52)> Не так.
См. <Alexander_K (27.12.02 10:18)> и TQuery.ParamByName


 
ShadowSnake ©   (2002-12-27 11:22) [13]


Query1.Close;
Query1.SQL.Clear;
for i:=1 to n do begin
{Query1.SQL.Add("INSERT INTO analiz_loc VALUES (ip[i], name[i], date[i], referer[i], send[i], rec[i]);");}
Query1.SQL.Add("INSERT");
Query1.SQL.Add("INTO ":analiz_loc:analiz.db"");
Query1.SQL.Add("VALUES("+ip[i]+", "+name[i]+", "+date[i]+", "+referer[i]+", "+send[i]+", "+rec[i]+");");
end;
Query1.ExecSQL;


Сделал так. Но говорит ошибка "invalid use keyword. token: 99.254"


 
Наталия ©   (2002-12-27 11:24) [14]

почитай help по parambyname


 
ShadowSnake ©   (2002-12-27 11:25) [15]

Мда. RTFM как говорится. А вот объяснить ошибку нельзя да? :-(


 
Наталия ©   (2002-12-27 11:44) [16]

Объясняю:
Ты неправильно формируешь строку SQL-запроса. Есть 2 варианта:
или переводить данные к текстовому формату и заключать их в двойные кавычки, или, (грамотнее), использовать параметры, так как если ты будешь пользоваться первым способом,тогда тебе нужно думать о формате даты.


 
Delirium^.Tremens ©   (2002-12-27 11:44) [17]


> Мда. RTFM как говорится. А вот объяснить ошибку нельзя да?
> :-(

Подставляй параметрами - Alexander_K (27.12.02 10:18)
или так: "+#39+{Приведи к строке}ip[i]+#39+"


 
ShadowSnake ©   (2002-12-27 11:46) [18]

Мда. Так я и не понял зачем нужно использовать parambyname.

for i:=1 to n do begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add("INSERT");
Query1.SQL.Add("INTO ":analiz_loc:analiz.db"");
Query1.SQL.Add("VALUES(:ip,:name,:date,:referer,:send,:rec);");
Query1.Params[1].AsString := ip[i];
Query1.Params[2].AsString := name[i];
Query1.Params[3].AsString := date[i];
Query1.Params[4].AsString := referer[i];
Query1.Params[5].AsString := send[i];
Query1.Params[6].AsString := rec[i];
Query1.ExecSQL;
end;


И так тоже не получается. :-(


 
Delirium^.Tremens ©   (2002-12-27 11:52) [19]


> И так тоже не получается. :-(

Params 0..5 или ParamByName("ip").AsString :=


 
Prooksius ©   (2002-12-27 12:05) [20]

2 ShadowSnake © (27.12.02 11:46)
А что не получается? Что пишет?
М.Б. надо писать так:

insert into TableName
( ip, name, date, referer, send, rec)
values
(:ip,:name,:date,:referer,:send,:rec)


 
ShadowSnake ©   (2002-12-27 12:07) [21]

Все. Всем спасибо. Все ок.


 
Наталия ©   (2002-12-27 12:08) [22]

Типы параметров проверь. И если не получается, то какая ошибка.


 
ScareCrow   (2002-12-27 14:10) [23]

Уважаемый ShadowSnake!!!

Если Ваш текстовый файл (назову его Source.txt) имеет фиксированную структуру,то я рекомендую вам использовать такое решение:

1.На форму положите компонент типа TTable (назовем его tbSourceTXT);

2.tbSourceTXT.TableType:=ttASCII;
2.1.Оч.важно!!! Предварительно создаем файл схему для Вашего текстового файла: будет называться, соответственно Source.sch Вот его содержимое:

[Source]
Filetype=Fixed
Field1=F1,Char,15,00,00
Field2=F2,Char,20,00,15
Field3=F3,Char,02,00,35
| |
| с какого символа стоки начинается поле
|
это размер поля

3.Кладем на форму компонент типа TBatchMove(назовем его bmFromTXTtoPARADOX);

4.bmFromTXTtoPARADOX.Source:=tbSourceTXT;
bmFromTXTtoPARADOX.Destination:=tbYourPARADOX;

5.Определяем bmFromTXTtoPARADOX.Mappings и bmFromTXTtoPARADOX.Mode;

6.В проге (без всяких циклов,SQL и ненужной траты времени!!!)
делаем bmFromTXTtoPARADOX.Execute.Работает, как Вы сами можете догадаться быстро: я таким способом перекачивал 200000 записей за разумное время;


 
ShadowSnake ©   (2002-12-27 15:01) [24]

Мда. Теперь появилась другая проблема. Все время выскакивает ошибка о недостаточной памяти. После выполнения 3-4 SQL запросов говорит что недостаточно памяти. И как то все так криво работает. Может конечно и я что начудил. Но все делаю по мануалу. 1-2 запроса работают нормально, а потом начинается ерунда какая то. Дошел до того, что уже и запросы то не выполняются. Вот:
Error: DataSource1: Circular datalink are not allowed

Query2.Close;
Query2.SQL.Clear;
Query2.SQL.Add("SELECT DISTINCT Name");
Query2.SQL.Add("FROM ":analiz_loc:analiz.DB"");
Query2.SQL.Add("WHERE");
Query2.SQL.Add("(Name = "oleg ")"); {"oleg " именно с пробелом, это не ошибка}
Query2.SQL.Add("ORDER BY Name");
Query2.ExecSQL;
DataSource1.DataSet:=Query2;



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

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

Наверх




Память: 0.52 MB
Время: 0.022 c
4-62889
alvin
2002-12-02 06:41
2003.01.20
Запущен ли MS Word


1-62509
Slayer
2003-01-10 14:15
2003.01.20
Информация из *.AVI


14-62765
aga
2002-12-29 14:06
2003.01.20
Фанаты Муимий Тролля!!


3-62353
Леший
2002-12-23 15:14
2003.01.20
Добрый день уважаемые мастера, подскажите пожалуйста


7-62874
BJValentine
2002-11-06 17:06
2003.01.20
Реестр