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

Вниз

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

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

Наверх




Память: 0.5 MB
Время: 0.008 c
14-62753
Николай Быков
2003-01-04 15:47
2003.01.20
Помогите уже кто-нибудь в конце-то концов :-)))


1-62532
MaxSit
2003-01-10 19:47
2003.01.20
Printer: Печать с перфорированной подачей бумаги


7-62883
cecist
2002-11-04 16:09
2003.01.20
Как программно вводить пароли в Windows2000


14-62723
Fantasist
2003-01-03 02:20
2003.01.20
Орех!


14-62794
Сергей Суровцев
2002-12-31 20:09
2003.01.20
С Новым Годом!!!





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский