dimonise
18.08.2009 - 19:53
Хочу сделать следующее - прочитать 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 секунд
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 все декодирует

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