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

Мне нужно перенести прайс из файла в формате CSV в базу MySQL без использовании php функции fgetcsv.

Подскажите как поступить?
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38415432
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
load data infile
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38415435
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например, так
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38415476
а как сделать чтобы дерево построило.. по сути nested tree???
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38415489
Дерево определяется с уровнем вложенности..
Формат CSV файла обычный:
[qoute]
Код;НазваниеКаталога;;
Код;НазваниеКаталога;;
Код;НазваниеТовара;Цена;Тип(шт,кг)
Код;НазваниеКаталога;;
Код;НазваниеТовара;Цена;Тип(шт,кг)
Код;НазваниеКаталога;;
Код;НазваниеТовара;Цена;Тип(шт,кг)
[/qoute]
Как из него дерево построить??
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38415503
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Либо переделать этот файл, разбив на два и добавив к товарам ссылки на категории. Либо читать построчно и в зависимости от неизвестно чего (наличие/отсутствие цены и типа?) записывать данные в ту или иную таблицу.
Барабанова Эльвирабез использовании php функции fgetcsvНу дык есть множество способов читать файл :-)
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38415510
vkle,

Да так и хочется сделать построчно считывать...
Категории различаются отсутствием Цен и Типов...

В то же время хочется сделать контроль по коду...
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38415511
Только не хочется чтобы дерево наезжала на другое дерево)
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38415546
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мухи - отдельно, котлеты - отдельно. В смысле, каждую сущность хранить в отдельной таблице. Что касается дерева, так не видать даже намеков. Показана линейная последовательность без ссылки на родителя.
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38415553
Получается что в первое время нужно вручную забивать?

Только при изменении изменять старые записи в базе?
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38415557
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас то каким образом по этим данным дерево можно построить? Не в коде, а просто карандашом на бумаге.
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38415713
1ур. Каталог
\- 2ур Каталог
\- 3ур Каталог
\- Товар
\- 3ур Каталог
\- Товар
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38415744
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Барабанова Эльвира1ур. Каталог
\- 2ур Каталог
\- 3ур КаталогА как Вы определили что это 3 уровень каталога, а не второй? Вот на мой взгляд, это второй уровень. А предыдущий второй уровень просто не содержит товаров (пустой).
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38415836
Именно так и нужно..
Прайс0235;1урКаталог;;
5023;2урКаталог;;
9142;3урКаталог;;
4912;3урТовар;32руб;шт
2918;3урКаталог;;
2832;3урТовар;38руб;шт
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38415844
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Барабанова ЭльвираИменно так и нужно..Другими словами, "я это просто знаю". Вот если б удалось составить алгоритм соотнесения детей и родителей - тады можно было бы автоматизировать заливку.
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38415864
Алгоритм надеюсь очень простой?
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38415870
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это уж Вам виднее. Нарисуйте на бумаге, формализуйте принципы соотнесения одного с другим. Когда "вручную" это будет работать без ошибок, тогда уже можно говорить о простоте или сложности.
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38415893
Код для разбора строк:
Код: php
1.
2.
3.
4.
5.
6.
7.
$values=array();
$fp=fopen("prices.csv","r");
while(!feof($fp)) {
  $str=fgets($fp,512);
  $values[]=explode(";",$str);
}
fclose($fp);


А в базу как с учетом уровней?
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38415904
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
$values=array();
$fp=fopen("prices.csv","r");
while(!feof($fp)) {
  $str=fgets($fp,512);
  $fields=explode(";",$str);
  if($fields[2]=="" && $fields[3]=="") {
    $fields["categorytype"]=1;
  } else {
    $fields["categorytype"]=0;
  }
  $values[]=$fields;
}
fclose($fp);


Кажется так лучше немного?
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38415913
Или так сделать? тут немного легче по учету кода сделать?
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
$values=array();
$fp=fopen("prices.csv","r");
while(!feof($fp)) {
  $str=fgets($fp,512);
  $fields=explode(";",$str);
  if($fields[2]=="" && $fields[3]=="") {
    $fields["categorytype"]=1;
  } else {
    $fields["categorytype"]=0;
  }
  $values[$fields[0]]=$fields;
}
fclose($fp);
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38415969
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну как... Если правильно понимаю, поле "Код" - как раз и есть уникальный идентификатор каталога или товара. Попался новый каталог - инсертите его в таблицу каталога, указав еще и идентификатор родительского. Попался товар - инсертите его в таблицу товаров, но со ссылкой на идентификатор каталога. В первом приближении так.

Если далее оптимизировать код, то можно сократить число запросов до двух (на не слишком больших объемах данных). Сначала собираете запрос на инсерт сразу всех элементов, а потом разом заносите данные в таблицу. Если запрос получается слишком большим (впираемся в ограничение памяти или ограничение sql-сервера), то инсертить порциями.

По коду замечание. Вы указали fgets($fp,512) что читать нужно не более 511 байт. Тут нужно быть уверенным что строк бОльшей длины в файле не существует или вообще не указывать длину читаемого фрагмента. В остальной код не вникал, ибо камментов там все равно нет, а алгоритм определения уровней каталога я так и не понял.
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38417159
vkle,


vkleа алгоритм определения уровней каталога я так и не понял.
алгоритм определения уровней каталога
Код: php
1.
2.
3.
4.
5.
if($fields[2]=="" && $fields[3]=="") {
    $fields["categorytype"]=1;
  } else {
    $fields["categorytype"]=0;
  }
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38417176
Читабельный код:
Код: 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);
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38417203
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Барабанова Эльвираалгоритм определения уровней каталога
Код: php
1.
2.
3.
4.
5.
if($fields[2]=="" && $fields[3]=="") {
    $fields["categorytype"]=1;
  } else {
    $fields["categorytype"]=0;
  }

Это распознавание каталога и распознавание товара.

А как распознать вот это?
Барабанова Эльвира 1 ур. Каталог
\- 2 ур Каталог
\- 3 ур Каталог
\- Товар
\- 3 ур Каталог
\- ТоварПочему должны быть именно эти цифры, а не другие?
...
Рейтинг: 0 / 0
Прайс в формате CSV в базу MySQL
    #38417336
Вот и я этого тоже хочу понять)
Кто мне поможет с решение этой задачи.

Неужели ещё 1 переменную втыкать? до условия цикла и только потом в цикле перебирать? то есть инкрементировать при условии каталога?
...
Рейтинг: 0 / 0
Прайс в формате 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
45 сообщений из 45, показаны все 2 страниц
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Прайс в формате CSV в базу MySQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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