powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Прайс в формате CSV в базу MySQL
20 сообщений из 45, страница 2 из 2
Прайс в формате CSV в базу MySQL
    #38417338
По сути сам файл ничего не скажет что принадлежит и к чему принадлежит..

А вот разбираться приходится))
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38417356
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Барабанова ЭльвираПо сути сам файл ничего не скажет что принадлежит и к чему принадлежит..Вот и у меня такое подозрение закралось с самого начала. Вероятно, принадлежность как-то на последовательности основана, но вот как именно - не понятно до конца. Возможно, если товар или группа товаров идет сразу за каталогом, то он и принадлежит к этому каталогу. На этом усё. А вот само дерево каталогов по существующей структуре (точнее, по ее отсутствию) вряд ли построить. Есть мысль обратиться к источнику этого файла и попытаться сделать экспорт в более связанном виде. Конечно, если оно возможно.
Барабанова ЭльвираПолучается что в первое время нужно вручную забивать?При таком раскладе получается что вручную.
Барабанова ЭльвираНеужели ещё 1 переменную втыкать?Да хоть десяток переменных, если оно реально поможет. На данном этапе количество переменных вообще несущественно.
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38417398
Фотография asws
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всегда использую примерно такую структуру для прайс-листа:
колонка 0 - порядковый номер строки,
колонки от 1 до 5 - коды разделов (5 уровней вложенности)
колонка 6 - код продукции (если 0, то это раздел)
колонка 7 и т.д. - наименование, ед.изм., цена и т.д.
разделители колонок - табуляция.

Например, для такой вложенной структуры:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
> БРЫЗГОВИКИ (код раздела 2)
> ВТУЛКИ ПОДУШКИ АМОРТИЗАТОРЫ (код раздела 8)
	>ВАЗ (код раздела 31)
	>ГАЗ, ВОЛГА, ПАЗ, УАЗ, Москвич (код раздела 1)
	>КАМАЗ (код раздела 107)
>РЕМКОМПЛЕКТЫ (код раздела 11)
	>ВАЗ (код раздела 51)
	>КАМАЗ (код раздела 54)
		>Водяной насос (код раздела 55)
		>Домкраты 5т. и 12т. (код раздела 60)
		>Компрессоры 1-цил и 2-цил. (код раздела 61)

Получаем такой наглядный файлик экспорта/импорта:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
1	2	0	0	0	0	0	 БРЫЗГОВИКИ	
2	2	0	0	0	0	2078		Брызговик ГАЗ  (ГАЗ-53, ЗИЛ-130, ПАЗ-3205)	75,00	
3	2	0	0	0	0	1772	3302-851188	Брызговик ГАЗ 3302 задний 420х230	36,00	
4	2	0	0	0	0	1770	3302-851188-10	Брызговик ГАЗ 3302 задний 420х430	38,00	
5	2	0	0	0	0	214	5511-8404202	Брызговик КАМАЗ задний /300х400/ самосвал	43,00	
6	2	0	0	0	0	212	5320-8511084	Брызговик КАМАЗ задний /510х590/ платформы кузова	80,00	
7	2	0	0	0	0	213	5320-8403185-01	Брызговик КАМАЗ передний /460х470/ задней части крыла кабины	70,00	
...
34	8	0	0	0	0	0	 ВТУЛКИ ПОДУШКИ АМОРТИЗАТОРЫ	
35	8	31	0	0	0	0	 ВАЗ	
36	8	31	0	0	0	1927	21213-1006090	Башмак ВАЗ 21213 натяжителя цепи в сборе	70,00	
37	8	31	0	0	0	1913	2105-2803152/53	Буфер ВАЗ 2105 бампера (ласты) (прав.+лев. - 2шт)	125,00	
38	8	31	0	0	0	1914	2106-2803060/61-10	Буфер ВАЗ 2106 бампера переднего (клык) комплект 4шт.	184,00	
39	8	31	0	0	0	2037	2123-2904248-00	Буфер ВАЗ 2123 Подвески передней	0,00	
...
121	8	1	0	0	0	0	 ГАЗ, ВОЛГА, ПАЗ, УАЗ, Москвич	
122	8	1	0	0	0	1179	406-1007243	Втулка ГАЗ Клапанной крышки  Дв.406	1,20	
123	8	1	0	0	0	1997		Втулка ПАЗ амортизатора	0,00	
124	8	1	0	0	0	644	695-2903046	Втулка ПАЗ балансира	8,65	
125	8	1	0	0	0	1129	3302-2202081	Опора ГАЗ подвес. с подшипником нов.обр в коробке	210,00	
126	8	1	0	0	0	1873	31029-2202076-10	Опора ГАЗ подвес. с подшипником усиленная в коробке	168,00	
127	8	1	0	0	0	1162	24-1001050	Подушка ГАЗ КПП ГАЗ-2410.  (шт.)	41,00	
...
142	8	107	0	0	0	0	 КАМАЗ	
143	8	107	0	0	0	211	55102-8501300	Амортизатор платформы (кузова) КАМАЗ, МАЗ	138,00	
144	8	107	0	0	0	209	5511-8601144	Амортизатор платформы кузова 3 шпильки КАМАЗ самосвал	200,00	
145	8	107	0	0	0	210	5502-8601144	Амортизатор платформы кузова 4 шпильки КАМАЗ самосвал	335,00	
146	8	107	0	0	0	208	5511-8601134	Амортизатор-накладка (горбатая) ловителя КАМАЗ самосвал	130,00	
...
769	11	0	0	0	0	0	 РЕМКОМПЛЕКТЫ	
770	11	51	0	0	0	0	 ВАЗ	
771	11	51	0	0	0	1933	№ 15	РК ВАЗ 2101 ГТЦ	10,00	
772	11	51	0	0	0	1934	№ 19	РК ВАЗ 2101 ГЦС	7,00	
773	11	51	0	0	0	1935	№ 18	РК ВАЗ 2101 РЦС	7,00	
774	11	51	0	0	0	1478	2101-1701210/1043	РК ВАЗ 2101 коробки перед (2шт) красный РТ	22,00	
...
917	11	54	0	0	0	0	 КАМАЗ	
918	11	54	55	0	0	0	 Водяной насос	
919	11	54	55	0	0	11	6-3НР25155ЕС30	РК КАМАЗ Водяного насоса ЕВРО-2,ЕВРО-3	1195,00	
920	11	54	55	0	0	7	740-1307000	РК КАМАЗ Водяного насоса РТИ	17,00	
...
984	11	54	60	0	0	0	 Домкраты 5т. и 12т.	
985	11	54	60	0	0	1537	5320-3913009	РК КАМАЗ Домкрата  5т. старого образца	22,00	
986	11	54	60	0	0	1538	5320-3913009	РК КАМАЗ Домкрата 12т. (г.Барановичи)	14,00	
987	11	54	61	0	0	0	 Компрессоры 1-цил и 2-цил.	
988	11	54	61	0	0	789		РК КАМАЗ Головки компрессора 2-цил. КАМАЗ-ЗИЛ-БЫЧОК	0,00	
989	11	54	61	0	0	370		РК КАМАЗ Компрессора 1-цилиндрового РТИ	0,00

Похоже на экспорт из 1С, если это так, то в 1С обычно пишется функция экспорта для создания такого файла.
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38417602
asws,

а как простым файлом грузить?

Знаю, что минимум, но всё же?
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38417701
Фотография asws
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Барабанова Эльвираasws,

а как простым файлом грузить?

Знаю, что минимум, но всё же?Программировать нужно.
- сначала этот файл сформировать на источнике - заполнить информацией
- потом распарсить на приёмнике - вытащить информацию

имхо так проще и быстрее, чем искать готовые модули экспорта/импорта и допиливать их, танцуя с бубном,
выбирать вам, или допиливание с костылями, или несложный велосипед с необходимой функциональностью.
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38417704
asws,

aswsПрограммировать нужно.

Я так и пыталась сделать)

Код
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
// Масив для результата
$values=array();
// Открываем файл на чтение
$fp=fopen("prices.csv","r");
// Цикл чтения строк до конца файла
while(!feof($fp)) {
  // Заносим в переменую
  $str=fgets($fp);
  // Бьем строку на части по символу ";"
  $fields=explode(";",$str);
  // Определяем
  if($fields[2]=="" && $fields[3]=="") {
    // Тут каталог
    $fields["categorytype"]=1;
  } else {
    // Тут товар
    $fields["categorytype"]=0;
  }
  // Заносим в резултат
  $values[$fields[0]]=$fields;
}
fclose($fp);



Что и куда дальше пробивать.. 1 переменую добавлять или 10?
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38417713
Фотография asws
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Барабанова Эльвира,

имхо

У вас формат данных в CSV файле не удобный, там видимо много умолчаний, по каким алгоритмам его формировать и парсить.
Поэтому кусок кода сложно рассматривать адекватно.

Лучше сначала проанализировать формат (правила) передачи данных, а потом писать код,
в данном случае код второстепенен.
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38417719
asws,

Код CSV0235;1урКаталог;;
5023;2урКаталог;;
9142;3урКаталог;;
4912;3урТовар;32руб;шт
2918;3урКаталог;;
2832;3урТовар;38руб;шт

Я как понимаю этот файл с товарами довольно простой умеет 3 уровня.. не более

А этот код довольный простой для того чтобы в базу перенести
Код PHP
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
// Масив для результата
$values=array();
// Открываем файл на чтение
$fp=fopen("prices.csv","r");
// Индекс для вложенность уровня в $db
$dbindex=0;
// Цикл чтения строк до конца файла
while(!feof($fp)) {
  // Заносим в переменую
  $str=fgets($fp);
  // Бьем строку на части по символу ";"
  $fields=explode(";",$str);
  // Определяем
  if($fields[2]=="" && $fields[3]=="") {
    // Тут каталог
    $fields["categorytype"]=1;
    $index[$dbindex]=$db->getLine("prices","id=".addslashes($dbindex));
    $fields["parentid"]=$dbindex;
    $result=$db->addLine("prices",$fields);
  } else {
    // Тут товар
    $fields["categorytype"]=0;
    $fields["parentid"]=$dbindex;
    $result=$db->addLine("prices",$fields);
  }
  // Заносим в резултат
  $values[$fields[0]]=$fields;
}
fclose($fp);
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38417907
Фотография asws
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Барабанова Эльвира,

Давайте по порядку.
Начнём с абсолютно точного определения формата данных в CSV файле.

Ваш образец:
Код CSV0235;1урКаталог;;
5023;2урКаталог;;
9142;3урКаталог;;
4912;3урТовар;32руб;шт
2918;3урКаталог;;
2832;3урТовар;38руб;шт
Итак, это прямая копипаста из CSV файла, или 1ур, 2ур, 2ур - вы сами написали?

1. Скопируйте большой кусок напрямую из CSV файла
2. Оставьте в нём все строки с Каталогами
3. Поудаляйте лишние строки с товарами (оставляйте не более 2-3 строк подряд)
4. Укажите кодировку CSV-файла

итого чтобы получилось строк 50-100 (под спойлер).

5. Приведите вид CREATE TABLE для таблицы или таблиц, куда надо записывать данные

--------------------
правильно заданный вопрос - половина ответа.
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38419032
Конечно же сама написала про уровни.. так как идеология формата совсем не меняет свое назначение. этот формат самый простой.. без уровней вложенности.

Вложенность учитывается только по появлению признака каталога.

Код CSV0235;Главная;;
5023;Товары;;
9142;СубТовары;;
4912;Товар;32руб;шт
2918;ДругиеСубТовары;;
2832;ДругойСубТоварДругойСубКатолога;38руб;шт

Хотя у Вас получается обширные сведения о предмете вложенности.. Прийдется мне менять свою мысль)
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38419039
Код БД
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE TABLE prices (
  id BIGINT(20) unsigned NOT NULL AUTO_INCREMENT,
  parentid BIGINT(20) unsigned NOT NULL,
  itemleft BIGINT(20) unsigned NOT NULL,
  itemorder BIGINT(20) unsigned NOT NULL,
  itemlevel BIGINT(20) unsigned NOT NULL,
  itemright BIGINT(20) unsigned NOT NULL,
  price_type TINYINT(1) NOT NULL,
  title TINYTEXT NOT NULL,
  article TINYTEXT NOT NULL,
  price FLOAT NOT NULL,
  visible TINYINT(1) NOT NULL,
  PRIMARY KEY (id));
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38419489
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Барабанова ЭльвираПрийдется мне менять свою мысль) Лучше сменить структуру импортируемого файла, если оно возможно.
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38419533
Фотография asws
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Барабанова ЭльвираКонечно же сама написала про уровни.. так как идеология формата совсем не меняет свое назначение. этот формат самый простой.. без уровней вложенности.

Вложенность учитывается только по появлению признака каталога.

Код CSV0235;Главная;;
5023;Товары;;
9142;СубТовары;;
4912;Товар;32руб;шт
2918;ДругиеСубТовары;;
2832;ДругойСубТоварДругойСубКатолога;38руб;шт

Хотя у Вас получается обширные сведения о предмете вложенности.. Прийдется мне менять свою мысль) Удивительный вы человек.
Не хотите, чтобы вам помогли бесплатно.
Тогда вам в раздел работа.
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38420780
vkleЛучше сменить структуру импортируемого файла

Подскажи какова должна структура?

aswsУдивительный вы человек.
Не хотите, чтобы вам помогли бесплатно.
Тогда вам в раздел работа.

Удивительный вы человек. М-да - я настойчивая)) за счет общения у меня позитивное вдохновение)
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38420834
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Барабанова Эльвиракакова должна структура?Тут огромадная гора вариантов. Хотя бы как asws предложил.

Если у всех [суб]каталогов есть свои уникальные id (код?), то указаывать id родительского каталога. Это минимальные данные по которым можно построить дерево без дополнительных условностей. Ну, с товарами в этом случае вроде понятно.

Можно и варианты с условностями рассмотреть. Например, уровень каталога определяется цифрой в некотором поле. При этом все субкаталоги текущего уровня должны находиться строго внутри родительского, а сразу за каждым субкаталогом идет перечисление товаров (если они есть) и только потом вложенные каталоги. Таким образом, просматривая файл построчно можно всегда иметь в какой-то переменной текущие каталог и уровень.

Можно принять что если два каталога идут подряд, то второй будет дочерним, но тогда нужен признак перехода на родительский уровень (все поля пусты, например). Этот вариант довольно близок к Вашему.

Разумеется, можно и в сторону XML посмотреть.
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38420838
vkle,

Спасибо за разъяснение..
Ага так и получается мне пора переходить на XML или даже на CommerceML.

Или бы услышать Ваш совет по поводу стандартов XML или CommerceML.

И новая технология подходу JSON-RPC....
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38420862
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Барабанова ЭльвираАга так и получается мне пора переходитьЗависит от множества факторов. Вы же файл не с потолка берете. Наверняка, он чем-то формируется на основе каких-то данных. Если окажется что для получения нормальной структуры достаточно дописать пару строк и потратить на это 5 минут, образно говоря - то вроде и нет большого смысла переходить на другую среду передачи. Если же есть готовый модуль экспорта в XML, да готовый модуль импорта, да все это еще и без проблем работает с файлами по пять гигов... А, ну тогда бы этого топика не было
Вот два крайних варианта. И еще 100500 между ними. + наработка скиллов для себя любимой.

PS: А еще довольно часто используют "екселевский файлик". Почему? А оно при соблюдении некоторых условностей достаточно удобно и для человеческого понимания и для машинного. И правки вносить может если не любой манагер, то уж через одного то точно.
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38421580
vkle,

vkleВы же файл не с потолка берете

Формируется из 1С)
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38421782
Фотография asws
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Барабанова ЭльвираФормируется из 1С) А дней 5 назад не могли это сказать, когда я специально уточнял?
Возможно поможет изучение кода в 1С ( 12249884 ) для формирования приводимого мной выше файлика,
там код велосипедный, но он показывает, какие функции из 1С дёргать.
Отдайте в работу 1С-нику, должен сделать быстро, потому что и формат файла, и пример кода есть.
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38422616
Зато Вы могли заметить что у меня в базе построено по другому))
Код БД 14934525
Код PHP 14927849
Тем более я множество примеров приводила и код PHP и код базы-MySQL) Это самая простая задача))
Кстати близится к завершению этой нудной задачки
Всем сердечно благодарю)
...
Рейтинг: 0 / 0
20 сообщений из 45, страница 2 из 2
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Прайс в формате CSV в базу MySQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]