Ну txt так txt.
И вот задача распарсить файл в базу MySQL.
Файл весит окала 40мб. Т.е. не маленький.
Если парсить регуляркой не сильно ли долго будет парсить?
Если регуляркой не долго, то какую функцию выбрать?
Вот кусочек файла
КодТовара^Наименование^Поставщик^^^^^^Цена1^Цена2^Цена3^Валюта^Остаток^Аналог^КодИзКаталога^Упаковка ^InStock
4369-34^^3M+SJM^^экранированный кабел 30м^1^^^^^14788.22^0^0^0^0^руб.^от 3-х недель^^^1^0
546.40^^3M+SJM^^экранированный кабель^1^^^^^4362.01^0^0^0^0^руб.^от 3-х недель^^^1^0
334506^^3M+SJM^^Антистатический скотч, 6434,5м^1^^^^^349.03^0^0^0^0^руб.^от 3-х недель^^^0^0
3M430 15x25^^3M+SJM^^антистатические пакеты^1^^^^^231.9^0^0^0^0^руб.^от 3-х недель^^^100^0
3M-4444 30x40^^3M+SJM^^антистатические пакеты2^1^^^^^1293.77^0^0^0^0^руб.^от 3-х недель^^^100^0
Спустя 13 минут, 34 секунды (3.11.2010 - 17:55) Гость_Michael написал(а):
свои идеи хоть имеются? Попытки код написать?
Спустя 4 дня, 16 часов, 44 минуты, 5 секунд (8.11.2010 - 10:39) linklink26 написал(а):
Свои имеются, но зачем тогда этот форум?
Все прочитал.
Осталось понять как группировать поставщика, т.е. определять вложенность товаров в категорию. Ибо это экспорт из 1 с.
$f_arr = file( "test.txt" );
$n_a = array();
for ($i=0; $i<count($f_arr); $i++) {
$n_a[$i] = explode("^", $f_arr[$i]);
}
var_dump($n_a);
Все прочитал.
Осталось понять как группировать поставщика, т.е. определять вложенность товаров в категорию. Ибо это экспорт из 1 с.
Спустя 12 минут, 11 секунд (8.11.2010 - 10:51) netruxa написал(а):
ну да тут explode тоже подойдет, хотя можно использовать preg_match_all
а поставщиков группировать можно создав массив и заносить туда чего надо. как я понял, это будет примерно так $group[$n_a[$i][2]]=... и тут какую инфу надо по товару
а поставщиков группировать можно создав массив и заносить туда чего надо. как я понял, это будет примерно так $group[$n_a[$i][2]]=... и тут какую инфу надо по товару
Спустя 1 час, 41 минута, 6 секунд (8.11.2010 - 12:32) SlavaFr написал(а):
а можно прямо во время чтения с файла получать масив.
http://de3.php.net/manual/en/function.fgetcsv.php
http://de3.php.net/manual/en/function.fgetcsv.php
Спустя 1 час, 2 минуты, 48 секунд (8.11.2010 - 13:35) Sanchopansa написал(а):
тут какоето не сходство есть
КодТовара^Наименование^Поставщик^^^^^^Цена1^Цена2^Цена3^Валюта^Остаток^Аналог^КодИзКаталога^Упаковка ^InStock - 12 колонок
а тут
4369-34^^3M+SJM^^экранированный кабел 30м^1^^^^^14788.22^0^0^0^0^руб.^от 3-х недель^^^1^0 - 13 значений
и почему постаянно разное количество разделителей (^) или я как то не так разбиваю это все?
КодТовара^Наименование^Поставщик^^^^^^Цена1^Цена2^Цена3^Валюта^Остаток^Аналог^КодИзКаталога^Упаковка ^InStock - 12 колонок
а тут
4369-34^^3M+SJM^^экранированный кабел 30м^1^^^^^14788.22^0^0^0^0^руб.^от 3-х недель^^^1^0 - 13 значений
и почему постаянно разное количество разделителей (^) или я как то не так разбиваю это все?
Спустя 1 час, 37 минут, 8 секунд (8.11.2010 - 15:12) linklink26 написал(а):
netruxa
Спасибо попробую покопать в эту сторону.
Sanchopansa
Сам в непонятках, мне этот импорт дал чел который типа шарит в 1с и делал тхт файл. Я его просил сделать нормально чтобы все было но он не умеет.. или не хочет. Буду его еще трясти.
Спасибо попробую покопать в эту сторону.
Sanchopansa
Сам в непонятках, мне этот импорт дал чел который типа шарит в 1с и делал тхт файл. Я его просил сделать нормально чтобы все было но он не умеет.. или не хочет. Буду его еще трясти.
Спустя 1 час, 37 минут, 21 секунда (8.11.2010 - 16:49) Sanchopansa написал(а):
Ну вообщето из 1С (на сколько я знаю, а я не силен в 1С) можно импортить вагоном вариантов... XLS, XML... и т.д. Работа с каторыми куда легче чем с этим что ты нам тут представил... Это я даже не знаю что такое.. ощущение что твой знакомый это руками бэкапил в файл
Корочи зажимай ему яйца в двери и все будет гуд.. а незнает как то пускай идет к дяде Гоше
Корочи зажимай ему яйца в двери и все будет гуд.. а незнает как то пускай идет к дяде Гоше
Спустя 1 день, 26 минут, 10 секунд (9.11.2010 - 17:15) linklink26 написал(а):
Sanchopansa )))))) ну это в 8-ке там xml а в 7-ке на dbf все, т.е либо dbf либо txt как он сказал. Но яйца еще зажму)))
Спустя 16 минут, 40 секунд (9.11.2010 - 17:32) Sanchopansa написал(а):
linklink26
Ясно.. спосибо за розъяснение.. буду знать..
А яйца зажать нада 100% все равно
Ясно.. спосибо за розъяснение.. буду знать..
А яйца зажать нада 100% все равно
Спустя 1 месяц, 10 дней, 23 часа, 8 минут, 6 секунд (20.12.2010 - 16:40) linklink26 написал(а):
Вопрос решил с помощью этого скрипта
И еще помогли коменты с этого блога http://parsing-and-i.blogspot.com/2010/05/csv-mysql.html
Всем тенкс.
$file_name = $_GET['path'];
$conn = mysql_connect ("localhost", "username", "pass")
or die ("Соединение не установлено!");
@mysql_select_db("db_name") or die ("Соединение не установлено!");
if (($handle_f = fopen($file_name, "r")) !== FALSE)
{
// проверяется, надо ли продолжать импорт с определенного места
// если да, то указатель перемещается на это место
if(isset($_GET['ftell'])){
fseek($handle_f,$_GET['ftell']);
}
$i=0;
if(isset($_GET['x'])){
$x=$_GET['x'];
} else {
$x = 0;
}
// построчное считывание и анализ строк из файла
while ( ($data_f = fgetcsv($handle_f, 1000, ";"))!== FALSE) {
$insert_q = 'insert into temp1 (code,contract,price,amount,dat_time,is_op) values '.
' (\''.$data_f[0].'\',\''.$data_f[1].'\',\''.$data_f[2].'\',\''.$data_f[3].'\',\''.$data_f[4].'\',\'0\')';
@mysql_query($insert_q);
if(!strstr($i/5000,'.')){
print 'Importing record #: '.$x.'<br />';
flush();
ob_flush();
}
if($i==20000){
print '<meta http-equiv="Refresh" content="0; url='.$_SERVER['PHP_SELF'].'?x='.$x.'&ftell='.ftell($handle_f).'&path='.$_GET['path'].'">';
exit;
}
$x++;
$i++;
}
fclose($handle_f);
} else {$err = 1; echo "Не получилось открыть файл";}
И еще помогли коменты с этого блога http://parsing-and-i.blogspot.com/2010/05/csv-mysql.html
Всем тенкс.