[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: база и файлы
dimonise
Хочу сделать следующее - прочитать txt файл и загрузить его в базу. В принципе здесь я справился. только вот мне нужно сделать так чтобы скрипт сам определял сколько колонок в файле, точнее чтобы в функции CREATE table автоматом менялось количество столбцов.

вот скрипт :
Код
<?php
include('info.inc.php');

$connect=mysql_connect($host, $account, $password) or die ('нет соединения');
$db=mysql_select_db($dbname, $connect);
$cena_zelan = 0;
$coeff_back = 0;
$file = "files/price4.txt";
$tovar = file($file);
$i = 0;

while ($i < count($tovar)){

list(
вот тут как то хитро сделать чтобы автоматически определить количество колонок ) 
Код
= split("\t",$tovar[$i]);


ну и дальше создание таблицы

Код

$table = "CREATE TABLE price(id INT NOT_NULL AUTO_INCREMENT,
тут уже не знаю как сделать чтобы забить определившееся количество колонок





Спустя 1 час, 59 секунд (18.08.2009 - 19:54) ElfSam написал(а):
А такое вообще возможно?

Спустя 6 минут, 56 секунд (18.08.2009 - 20:01) dimonise написал(а):
Цитата (ElfSam @ 18.08.2009 - 16:54)
А такое вообще возможно?

что нельзя так? как же тогда побороть? вообщем хочу чтобы из админки сайта создавать разные таблицы в базу автоматом. как еще это можно решить?

Спустя 19 минут (18.08.2009 - 20:20) ElfSam написал(а):
Насколько я знаю mуsql-запрос можно запускать из файлов .sql. А файл это формировать динамически

Спустя 3 минуты, 5 секунд (18.08.2009 - 20:23) PandoraBox2007 написал(а):
покажи кусок дампа files/price4.tx

этот запрос можно оптимизировать от пары минут до 20 секунд wink.gif

LOAD DATA INFILE

Спустя 5 минут, 48 секунд (18.08.2009 - 20:29) ElfSam написал(а):
Но тут нужно будет писать программу-обработчик, которая будет считыват данные из твоих файлов, с помощью рег. выражений выделять поля для твоих таблиц , далее с помощью тех же рег. выражений анализировать содержание этих полей (нужно будет для определения типа данных полей). Потом динамически сформировать файл .sql с запросом.

Спустя 1 минута, 25 секунд (18.08.2009 - 20:31) ElfSam написал(а):
Такая безумная идея у меня промелькнула ))

Спустя 1 минута, 19 секунд (18.08.2009 - 20:32) PandoraBox2007 написал(а):
смотря какой размер сегмента если количество колонок одинаковое ему нужно прочитать первую строчку файла и закрыть файл дальше передать на оброботку БД

Спустя 12 минут, 54 секунды (18.08.2009 - 20:45) ElfSam написал(а):
Именно в том и дело, что число колонок в файлах разное. И самих файлов несколько десятков

Спустя 1 минута, 58 секунд (18.08.2009 - 20:47) dimonise написал(а):
что-то очень заумно... мне бы попроще как нибудь объяснить

Спустя 1 минута, 24 секунды (18.08.2009 - 20:48) ElfSam написал(а):
Я так понял проблему

Спустя 2 минуты, 28 секунд (18.08.2009 - 20:51) ElfSam написал(а):
Ну тут дело такое, что либо заумное понимать, либо ручками все файлы перебирать

Спустя 26 секунд (18.08.2009 - 20:51) PandoraBox2007 написал(а):
в таком случае надо написать на С++ сервис который будет посредством Socket обрабатывать эти файлы и ставить их в очередь на оброботку

Спустя 13 минут, 53 секунды (18.08.2009 - 21:05) dimonise написал(а):
трындец....

Спустя 3 минуты, 28 секунд (18.08.2009 - 21:09) PandoraBox2007 написал(а):
да с запасом сделай колонок и будет тебе счастье +)

Спустя 8 минут, 5 секунд (18.08.2009 - 21:17) ElfSam написал(а):
А если данные там разнотипные?
Например tabl1(int, varchar, int, date) и tabl2(varchar, float).

Спустя 5 минут, 46 секунд (18.08.2009 - 21:22) dimonise написал(а):
толково. а сервак пусть сгорит нахрен.

Спустя 3 минуты, 29 секунд (18.08.2009 - 21:26) Gabriel написал(а):
а че нельзя сделать чтото что будет открывать записивать в файл сохранять и при нажатии кнупочки будет запускать его?
а от чего сервак должен сгорать? или в виде сервера выступает тетриз?

Спустя 17 минут, 13 секунд (18.08.2009 - 21:43) PandoraBox2007 написал(а):
да короче 1 уровненный массив сирелизация данных там тебе хоть int хоть float все декодирует wink.gif

PHP
$data = array(
    "omg"    =>   (int)  555,
    "O_o"    =>   (float) 9.14,
    "sub"    =>   array(
        "1" => false,
        "2" => true,
    ),
);

echo $str = serialize($data) . "<br /><br />";
print_r(unserialize($str));


П.С а зачем вам это надо ?

Спустя 15 минут, 4 секунды (18.08.2009 - 21:58) dimonise написал(а):
ну если по проще объяснить мне нужно добавлять в базу больше 400 прайсов по категориям причем все прайсы разные по виду ( в смысле по виду таблиц) и еще добавляться и чтоб руками не писать таблицы в phpMyadmin хочу это дело автоматизировать

Спустя 1 час, 23 минуты, 53 секунды (18.08.2009 - 23:22) PandoraBox2007 написал(а):
нужно стандартизировать с помощью Exel и парсить регулярными выражениями с готовых решений Virtuemart
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.