Робота з MySql – наповнення даними, Perl, Програмування, статті

Сухінін A., Webscript.ru

Таблиці готові. Тепер в них треба щось записати.Щоб записати, треба туди щось передати.вообщем, формат запису наступний:

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;
# Конектиться до сервера MySqlmy $ dbh ="Логін", "пароль") | | 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 = 1name: Розваги id = 2
....
....name: Новини id = 10

З категоріями розібралися, база даних зберігає дані і віддає на першу вимогу, скрипти на Perl працюють, тепер все це потрібно одягнутися в легкотравну Web-оболонку. Про це в наступній статті.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*