WebScript.Ru
C:\   главная  ::   о сайте  ::  каталог скриптов  ::  гнездо  ::  форум  ::   авторам  :: Новостройки ::   ХОСТИНГ  ::

|| разделы::
|| поиск по сайту::

|| реклама::
|| новости почтой::
Рассылки Subscribe.Ru ::



Новости сайта WebScript.Ru
Популярные статьи

Hot 5 Stories

|| рекомендуем::




Работа с MySql - наполнение данными


Прислал: Alexander Suhhinin [ 01.07.2001 @ 06:50 ]
Раздел:: [ Статьи по Perl ]


Таблицы готовы. Теперь в них надо что-то записать. Чтобы записать, нужно туда что-то передать. вообщем, формат записи следующий:
INSERT INTO category (id, name) VALUES ('', 'Интернет')
и, соответственно, perl инструкция:

$dbh->do("INSERT INTO category (id, name) VALUES ('', 'Интернет')");

В данном случае, SQL инструкцией INSERT INTO вставляем в тадлицу category в поля id, name значения " ", "Интернет". Поле id автоматически получит следующее значение, т.е. если не было записей, то там буде значение 1. Если у вас все ваши категории находятся в текстовом файле, то их можно подгрузить оттуда прямо в таблицу. Есть инструкция LOAD DATA INFILE. Чтобы загрузить данные из файла, который находится на локальной машине, нужно указать в инструкции ключевое слово LOCAL. Поля, в принципе могут быть разделены любым разделителем, текстовые поля могут быть заключены в кавычки. Записи закачиваются символом 'окончание строки'. SQL запрос будет выглядеть так:

LOAD DATA LOCAL INFILE '/MyDocs/categories.txt' REPLACE 
INTO TABLE category FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED
BY '\"' LINES TERMINATED BY '\n'
В данном случае файл categories.txt находится на машине под управлением MS Windows, в каталоге C:\MyDocs. Обратите внимание на UNIX стиль написания пути. Perl скрипт будет брать файл с текущего диска из каталога MyDocs. Слово REPLACE в SQL запросе означает, что необходимо замещать записи с совпадающими значениями ключей. INTO TABLE указывает имя талицы, куда будут импортированы данные. FIELDS TERMINATED BY ';' указывает разделители полей, порядок полей должен быть таким же, как и в таблице назначения, OPTIONALLY ENCLOSED BY '\"' указывает, что поля VARCHAR взяты в двойные кавычки, и LINES TERMINATED BY '\n' указывает, что записи заканчиваются символом новой строки (\n).В случае, если вы работаете в MS Windows, вам нужно указать LINES TERMINATED BY '\r', т.к. текстовые файлы в UNIX имеют окончание строки символ \n == 0x0A, а в MS Windows \r == 0x0D.
Я экспериментировал с текстовым файлом следующего содержания:
1;"Интернет"
2;"Развлечения"
3;"Документация"
4;"Софт"
5;"Поисковые системы"
6;"Чаты"
7;"Для разработчиков"
8;"Документация по ПХП"
9;"Фидо-гейты"
10;"Новости"
Как вы уже догадались, инструкция Perl выглядит так:
$dbh->do("LOAD DATA LOCAL INFILE '/MyDocs/categories.txt' REPLACE 
INTO TABLE category FIELDS TERMINATED BY ';' OPTIONALLY
ENCLOSED BY '\"' LINES TERMINATED BY '\n'");
Если не получилось, проверьте расположение файлов, синтаксис.
После того, как данные импортированы, нужно простмотреть, что же у нас получилось. В SQL существует самая используемая инструкция SELECT. В нашем случае нужно написать следующий код:
use DBI;
# коннектимся к серверу MySql
my $dbh = DBI->connect("DBI:mysql:database=ваша_база_данных;host=адрес_сервера_mysql",
"логин", "пароль") || die $DBI::errstr;
# готовим запрос
my $result = $dbh->prepare("SELECT * FROM category");
#  и выполняем его
$result->execute();
# разбираем результат
# результат помещается в хэш,
# печатаем элементы поименно
while (my $ln = $result->fetchrow_hashref()) {
print "name : $ln->{'name'} id: = $ln->{'id'}\n";
}
$dbh->disconnect();
Если вs использовали данные, приведенные выше, то получите следующее:
name : Интернет id = 1
name : Развлечения id = 2
....
....
name : Новости id = 10

С категориями разобрались, база данных хранит данные и отдает по первому требованию, скрипты на Perl работают, теперь все это нужно облачить в удобоваримую Web-оболочку. Об этом в следующей статье.




 :::::  Leo пишет 08.11.2001 @ 05:20 
Поучительно и подробно.......
Очень не плохо
 :::::  Ginger пишет 11.03.2002 @ 15:06 
Спасибо автору: очень помог.
 :::::  Dorian пишет 17.03.2002 @ 18:48 
Спасибо, дошодчиво.... если поможет еще напишу....
 :::::  Dionys пишет 16.04.2002 @ 02:00 
Благодарю, - очень помогло в проекте...

 :::::  psv пишет 12.11.2002 @ 16:09 
Большое спасибо, а не подскажите где еще можно найти информацию о работе с перл при работе с базами данными на MySQL
 :::::  Aleksandr пишет 22.12.2002 @ 18:44 
Неплохо! Вот только в мою базу из файла внеслось только 4 первые записи. Почему?
Имя:
Email:
URL

Введите сумму двух чисел девять и одинн (девять+одинн=?)
Запомнить мою информацию

* Html запрещен* Ваш E-mail опубликован не будет.

Copyright © 2000-2001 WebScript.Ru nas@webscript.ru
Design © 2001 by Parallax Design Studio (aka Spectator.ru)
Все торговые марки и авторские права на эту страницу принадлежат их соответствующим владельцам.
Сгенерировано за: 0.0335979