Jump to content

Импорт характеристик


Recommended Posts

Здравствуйте!
Быстрый поиск по форуму ответа на мой вопрос не дал. Подскажите, пожалуйста,
как импортировать значение характеристики, содержащее текст с запятой внутри? Например, поле Состав:
"Возраст:от 3 лет,Состав:винил, пластмасса, текстиль,Страна:США,Тип:игровой коврик,Габариты:98.5*88.5см"
Естественно, без кавычек. Я бы понял, если бы вообще нельзя было использовать запятые, но в каком-то случае проходит загрузка, а в каком-то нет. Удивительно, но, если скопировать с админки текст "винил, пластмасса, текстиль" - он может загрузиться, а если символ-в-символ набрать вручную - нет. Проверял в ворде с включенными неотображаемыми символами - строки идентичны. Что я проглядел или не учёл?

Link to comment
Share on other sites

Сделать файл с разделителями не запятая, а точка с запятой.

Возраст:от 3 лет;Состав:винил, пластмасса, текстиль;Страна:США;Тип:игровой коврик;Габариты:98.5*88.5см

Link to comment
Share on other sites

Извиняюсь, я изначально не очень корректно сформулировал вопрос.

Полная строка загрузки: "6049;1;Костюм Автогонщика;37,386;2860;;;;;;;;8562;;;5;;;;;;;;12;;;;;;Замечательный костюм автогонщика.;;Карнавальный костюм;;;;;;;;;;;;;Возраст:от 3 лет,Состав:винил‚ пластмасса‚ текстиль,Страна:США,Тип:карнавальные костюмы" без кавычек. И точка с запятой уже используется как разделитель полей. Понимаю, что можно, в примеру, использовать символ ~ вместо запятой и немного поменять файл выгрузки csv. Но почему иногда проходит выгрузка строки-значения с запятыми, а иногда нет. Я вчера на тестовой базе около трёх часов импортировал 2 артикула с разными вариантами. Иногда проходит, иногда нет. Закономерности вообще не улавливаю.

PS а в каком php или js файле происходит собственно разбор csv?

Edited by theOrange (see edit history)
Link to comment
Share on other sites

Сделать файл с разделителями не запятая, а точка с запятой.

Возраст:от 3 лет;Состав:винил, пластмасса, текстиль;Страна:США;Тип:игровой коврик;Габариты:98.5*88.5см

Не обязательно. По стандарту CSV, если в тексте ячейки есть разделитель, то ячейка берется в двойные кавычки, а если в тексте кавычки - то они дублируются. Потому присутствие разделителя в (запятая) там не должно мешать, если структура csv оформлена правильно.

Но почему иногда проходит выгрузка строки-значения с запятыми, а иногда нет. Я вчера на тестовой базе около трёх часов импортировал 2 артикула с разными вариантами. Иногда проходит, иногда нет. Закономерности вообще не улавливаю.

PS а в каком php или js файле происходит собственно разбор csv?

Т.е. один и тот же файл без изменений импортируется через раз?

  • Like 1
Link to comment
Share on other sites

Не обязательно. По стандарту CSV, если в тексте ячейки есть разделитель, то ячейка берется в двойные кавычки, а если в тексте кавычки - то они дублируются. Потому присутствие разделителя в (запятая) там не должно мешать, если структура csv оформлена правильно.

Очень интересное замечание. Мне, конечно же, не хватает теории в таких вот основах, попробую покопать в этом направлении.

 

Т.е. один и тот же файл без изменений импортируется через раз?

Нет. Файлы разные (много последовательных экспериментов). Но вот в одном файле две идентичные строки импортируются по-разному. Вот пример файла из 2х строк:

6049;1;Костюм Автогонщика;37,386;2860;;;;;;;;8562;;;5;;;;;;;;12;;;;;;Замечательный костюм автогонщика со шлемом и приборной доской-рулем. Костюм очень легко стирается в стиральной машине и благодаря хорошему качеству долго не выцветает и не теряет форму.;;Карнавальный костюм;;;;;;;;;;;;;Возраст:от 3 до 6 лет,Состав:винил‚ пластмасса‚ текстиль, винил‚ пластик‚ текстиль,2,Страна:США,Тип:карнавальные костюмы

6048;1;Коврик, строительная плащадка;17,82;2400;;;;;;;;9407;;;5;;;;;;;;33;;;;;;Коврик изготовлен с прочного материала. Игровой коврик представляет собой карту небольшой части строящегося города. Можно стирать в стиральной машинке. В наборе коврик и 3 машины.;;Деревянные Игрушки;;;;;;;;;;;;;Возраст:от 3 лет, Состав:винил,пластмасса,текстиль,туц, Страна:США, Тип:игровой коврик, Габариты:98,5*88,5см

Так вот первая строка импортирует значение поля "Состав" - "винил‚ пластмасса‚ текстиль", а вторая строка - "винил". Я не вижу в этом логики.

Кстати, подскажите, пожалуйста, неточности в оформлении этих 2х строк (по csv-стандартам). Спасибо.

Link to comment
Share on other sites

Очень интересное замечание. Мне, конечно же, не хватает теории в таких вот основах, попробую покопать в этом направлении.

Вот только практика не всегда соответствует теории, потом у всегда имеем то, что имеем. Даже в phpmyadmin при эеспорте выборки в csv есть выбор из нескольких версий (правил оформления) csv

Нет. Файлы разные (много последовательных экспериментов). Но вот в одном файле две идентичные строки импортируются по-разному. Вот пример файла из 2х строк:

6049;1;Костюм Автогонщика;37,386;2860;;;;;;;;8562;;;5;;;;;;;;12;;;;;;Замечательный костюм автогонщика со шлемом и приборной доской-рулем. Костюм очень легко стирается в стиральной машине и благодаря хорошему качеству долго не выцветает и не теряет форму.;;Карнавальный костюм;;;;;;;;;;;;;Возраст:от 3 до 6 лет,Состав:винил‚ пластмасса‚ текстиль, винил‚ пластик‚ текстиль,2,Страна:США,Тип:карнавальные костюмы

6048;1;Коврик, строительная плащадка;17,82;2400;;;;;;;;9407;;;5;;;;;;;;33;;;;;;Коврик изготовлен с прочного материала. Игровой коврик представляет собой карту небольшой части строящегося города. Можно стирать в стиральной машинке. В наборе коврик и 3 машины.;;Деревянные Игрушки;;;;;;;;;;;;;Возраст:от 3 лет, Состав:винил,пластмасса,текстиль,туц, Страна:США, Тип:игровой коврик, Габариты:98,5*88,5см

Так вот первая строка импортирует значение поля "Состав" - "винил‚ пластмасса‚ текстиль", а вторая строка - "винил". Я не вижу в этом логики.

Кстати, подскажите, пожалуйста, неточности в оформлении этих 2х строк (по csv-стандартам). Спасибо.

Я например в первой строке вижу пробел после запятой, а по второй не вижу, может из-за этого. Нужно смотреть на исходный код скрипта который парсит строки, а так это все гадание на кофейной гуще. можно еще попробовать затянуть их через phpmyadmin, но там требуются серьезные знания.

Link to comment
Share on other sites

Нет, к сожалению пробел и отсутствие пробела роли не играют. По крайней мере, постоянной роли. Ибо это только один из вариантов файла, который я импортировал. Был, к примеру, файл из 2 идентичных строк (за исключением артикула). Полностью одинаковые строки, но в одной значение поля "Состав" скопировано из админки, а второе символ-в-символ набрано вручную. Поле из админки загрузилось идеально, а набранное вручную - нет. Я там уже немного занервничал, поэтому скопировал обе строки в ворд и включил отображение невидимых символов. Но нет, строки были идентичны, я в масштабе 400% чуть ли не с лупой рассматривал. Сейчас вот не спеша ползаю по файл-менеджеру, ищу файл, ответственный за импорт. Видимо, других путей разобраться нет.

Link to comment
Share on other sites

Так вот первая строка импортирует значение поля "Состав" - "винил‚ пластмасса‚ текстиль", а вторая строка - "винил". Я не вижу в этом логики.

Кстати, подскажите, пожалуйста, неточности в оформлении этих 2х строк (по csv-стандартам). Спасибо.

Еще как вариант, на форуме упоминается программа Инетшоп, может вам стоит попробовать создать правильный csv через нее или вообще попробовать настроить загрузку товары через нее. С прайс-листами она точно справляется.

Link to comment
Share on other sites

Полностью одинаковые строки, но в одной значение поля "Состав" скопировано из админки, а второе символ-в-символ набрано вручную. Поле из админки загрузилось идеально, а набранное вручную - нет. Я там уже немного занервничал, поэтому скопировал обе строки в ворд и включил отображение невидимых символов. Но нет, строки были идентичны, я в масштабе 400% чуть ли не с лупой рассматривал. Сейчас вот не спеша ползаю по файл-менеджеру, ищу файл, ответственный за импорт. Видимо, других путей разобраться нет.

Не забывайте, что символы "c", "o", "a" в латинице и кириллице выглядят одинакого, но на самом деле имеют разные коды. Я с этим столкнулся когда артикулы выглядели одинаково, а воспринимались как разные.

  • Like 1
Link to comment
Share on other sites

Всё, разобрался. В том числе и благодаря Вашей наводке. Во-первых, посмотрел код. Там строка с характеристиками сначала делится на части, разделённые запятыми, то есть ситуация, когда в подстроке окажется запятая в принципе невозможна. Потом я залез в админку, скопировал значение поля характеристики с запятыми, которое у меня успешно загружалось, и вставил в онлайн-конвертер ASCII кодов. Прекрасно! Оказывается там была не запятая, а "Нижняя одинарная открывающая кавычка". Человек, который до меня работал с сайтом, видимо, таким костылём обошёл невозможность загрузки строк с запятыми. Теперь, получив однозначный ответ, при генерации csv просто использую "~" в качестве разделителя значений. Спасибо.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...