Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Заполнение таблиц из текстового файла (ipse) 14/03/2005 - 15:58:14
      Re: Заполнение таблиц из текстового файла (Alec) 14/03/2005 - 17:46:05
      Re: Заполнение таблиц из текстового файла (ipse) 15/03/2005 - 01:08:32
      Re: Заполнение таблиц из текстового файла (Alec) 15/03/2005 - 09:59:25
      Re: Заполнение таблиц из текстового файла (ipse) 15/03/2005 - 11:25:05
      Re: Заполнение таблиц из текстового файла (Alec) 15/03/2005 - 11:39:47
      Re: Заполнение таблиц из текстового файла (ipse) 15/03/2005 - 21:10:56

> Original message text:
> From: ipse - 14/03/2005 - 15:58:14
> Subject:Заполнение таблиц из текстового файла
> -----------------
> Мне известен только способ
>
> LOAD DATA INFILE
>               'filename'
>           INTO TABLE
>               tablename
>           FIELDS TERMINATED BY '|'
> Но для выполнения запроса LOAD DATA INFILE нужна глобальная привелегия file, которую мой хостинг провайдер упорно не хочет мне предоставить.
>
> Есть еще способы заполнения таблицы из текстового файла? INSERT не подходит, около 1000 строк текста для каждой таблицы устанеш по одной загружать..
>


From: ipse - 15/03/2005 - 01:08:32
Subject:Заполнение таблиц из текстового файла
-----------------
Чет нихрена пока не получается, написал вот такую шнягу:
Фрагмент .conf файла

$tbl_Soft = 'soft'; # Название таблицы
$fld_Soft_Id = 'soft_id'; # Это и далее названия полей
$fld_Soft_Name = 'soft_name';
$fld_Soft_Size = 'soft_size';
$fld_Soft_ParentCategory = 'soft_parentcategory';
$fld_Soft_Data = 'soft_data';
$fld_Soft_Category = 'soft_category';
$fld_Soft_Contents = 'soft_contents';
$fld_Soft_Presence = 'soft_presence';
$fld_Soft_Rezerv = 'soft_rezerv';
$fld_Soft_Owner = 'soft_owner';



Скрипт собственно

#!/usr/bin/perl

use DBI;
require './sgv_db.conf';

$dbh = "DBI:mysql:$db_Name:$db_Host:$db_Port";
$dbh = DBI->connect($dbh, $db_User, $db_Password); # Подключение, значения переменным заданы в .conf

$dbh->do("DROP TABLE IF EXISTS $tbl_Soft");

$dbh->do("CREATE TABLE $tbl_Soft
(
$fld_Soft_Id MEDIUMINT NOT NULL AUTO_INCREMENT,
$fld_Soft_Name VARCHAR(255) NOT NULL,
$fld_Soft_Size FLOAT(15,2) NOT NULL,
$fld_Soft_ParentCategory VARCHAR(255) NOT NULL,
$fld_Soft_Data VARCHAR(11) NOT NULL,
$fld_Soft_Category MEDIUMINT NOT NULL,
$fld_Soft_Contents TEXT NOT NULL,
$fld_Soft_Presence VARCHAR(255) NOT NULL,
$fld_Soft_Rezerv VARCHAR(255) NOT NULL,
$fld_Soft_Owner VARCHAR(127) NOT NULL,
PRIMARY KEY ($fld_Soft_Id),
INDEX ($fld_Soft_Name),
INDEX ($fld_Soft_ParentCategory),
INDEX ($fld_Soft_Category),
FULLTEXT INDEX ($fld_Soft_Name, $fld_Soft_ParentCategory, $fld_Soft_Contents)
)"
);

open (TABLE, "../../../../../soft.txt"); # Файл с данными, поля разделены | , строки \n
my @data = <TABLE>;
close (TABLE);
foreach (@data) {
my($Soft_Id, $Soft_Name,
$Soft_Size, $Soft_ParentCategory,
$Soft_Data, $Soft_Category,
$Soft_Contents, $Soft_Presence,
$Soft_Rezerv, $Soft_Owner) = split (/\|/);
$dbh->do ("INSERT INTO $tbl_Soft ($fld_Soft_Id, $fld_Soft_Name,
$fld_Soft_Size, $fld_Soft_ParentCategory,
$fld_Soft_Data, $fld_Soft_Category,
$fld_Soft_Contents, $fld_Soft_Presence,
$fld_Soft_Rezerv, $fld_Soft_Owner)
VALUES ($Soft_Id, $Soft_Name,
$Soft_Size, $Soft_ParentCategory,
$Soft_Data, $Soft_Category,
$Soft_Contents, $Soft_Presence,
$Soft_Rezerv, $Soft_Owner)");
}

$dbh->disconnect();

Таблица создается, а вот заполнятся - хрен. Иде я лоханулся?
Таблицу до этого создавал аналогичным образом и заполнял её из того же файла при помощи LOAD DATA INFILE на своем компе, все работало.


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
20813



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |