theOrange Posted June 10, 2016 Share Posted June 10, 2016 Здравствуйте! Быстрый поиск по форуму ответа на мой вопрос не дал. Подскажите, пожалуйста, как импортировать значение характеристики, содержащее текст с запятой внутри? Например, поле Состав: "Возраст:от 3 лет,Состав:винил, пластмасса, текстиль,Страна:США,Тип:игровой коврик,Габариты:98.5*88.5см" Естественно, без кавычек. Я бы понял, если бы вообще нельзя было использовать запятые, но в каком-то случае проходит загрузка, а в каком-то нет. Удивительно, но, если скопировать с админки текст "винил, пластмасса, текстиль" - он может загрузиться, а если символ-в-символ набрать вручную - нет. Проверял в ворде с включенными неотображаемыми символами - строки идентичны. Что я проглядел или не учёл? Link to comment Share on other sites More sharing options...
wagood Posted June 10, 2016 Share Posted June 10, 2016 Сделать файл с разделителями не запятая, а точка с запятой. Возраст:от 3 лет;Состав:винил, пластмасса, текстиль;Страна:США;Тип:игровой коврик;Габариты:98.5*88.5см Link to comment Share on other sites More sharing options...
theOrange Posted June 10, 2016 Author Share Posted June 10, 2016 (edited) Извиняюсь, я изначально не очень корректно сформулировал вопрос. Полная строка загрузки: "6049;1;Костюм Автогонщика;37,386;2860;;;;;;;;8562;;;5;;;;;;;;12;;;;;;Замечательный костюм автогонщика.;;Карнавальный костюм;;;;;;;;;;;;;Возраст:от 3 лет,Состав:винил‚ пластмасса‚ текстиль,Страна:США,Тип:карнавальные костюмы" без кавычек. И точка с запятой уже используется как разделитель полей. Понимаю, что можно, в примеру, использовать символ ~ вместо запятой и немного поменять файл выгрузки csv. Но почему иногда проходит выгрузка строки-значения с запятыми, а иногда нет. Я вчера на тестовой базе около трёх часов импортировал 2 артикула с разными вариантами. Иногда проходит, иногда нет. Закономерности вообще не улавливаю. PS а в каком php или js файле происходит собственно разбор csv? Edited June 10, 2016 by theOrange (see edit history) Link to comment Share on other sites More sharing options...
Abbatrue Posted June 12, 2016 Share Posted June 12, 2016 Сделать файл с разделителями не запятая, а точка с запятой. Возраст:от 3 лет;Состав:винил, пластмасса, текстиль;Страна:США;Тип:игровой коврик;Габариты:98.5*88.5см Не обязательно. По стандарту CSV, если в тексте ячейки есть разделитель, то ячейка берется в двойные кавычки, а если в тексте кавычки - то они дублируются. Потому присутствие разделителя в (запятая) там не должно мешать, если структура csv оформлена правильно. Но почему иногда проходит выгрузка строки-значения с запятыми, а иногда нет. Я вчера на тестовой базе около трёх часов импортировал 2 артикула с разными вариантами. Иногда проходит, иногда нет. Закономерности вообще не улавливаю. PS а в каком php или js файле происходит собственно разбор csv? Т.е. один и тот же файл без изменений импортируется через раз? 1 Link to comment Share on other sites More sharing options...
theOrange Posted June 14, 2016 Author Share Posted June 14, 2016 Не обязательно. По стандарту 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 More sharing options...
Abbatrue Posted June 14, 2016 Share Posted June 14, 2016 Очень интересное замечание. Мне, конечно же, не хватает теории в таких вот основах, попробую покопать в этом направлении. Вот только практика не всегда соответствует теории, потом у всегда имеем то, что имеем. Даже в 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 More sharing options...
theOrange Posted June 14, 2016 Author Share Posted June 14, 2016 Нет, к сожалению пробел и отсутствие пробела роли не играют. По крайней мере, постоянной роли. Ибо это только один из вариантов файла, который я импортировал. Был, к примеру, файл из 2 идентичных строк (за исключением артикула). Полностью одинаковые строки, но в одной значение поля "Состав" скопировано из админки, а второе символ-в-символ набрано вручную. Поле из админки загрузилось идеально, а набранное вручную - нет. Я там уже немного занервничал, поэтому скопировал обе строки в ворд и включил отображение невидимых символов. Но нет, строки были идентичны, я в масштабе 400% чуть ли не с лупой рассматривал. Сейчас вот не спеша ползаю по файл-менеджеру, ищу файл, ответственный за импорт. Видимо, других путей разобраться нет. Link to comment Share on other sites More sharing options...
Abbatrue Posted June 14, 2016 Share Posted June 14, 2016 Так вот первая строка импортирует значение поля "Состав" - "винил‚ пластмасса‚ текстиль", а вторая строка - "винил". Я не вижу в этом логики. Кстати, подскажите, пожалуйста, неточности в оформлении этих 2х строк (по csv-стандартам). Спасибо. Еще как вариант, на форуме упоминается программа Инетшоп, может вам стоит попробовать создать правильный csv через нее или вообще попробовать настроить загрузку товары через нее. С прайс-листами она точно справляется. Link to comment Share on other sites More sharing options...
Abbatrue Posted June 14, 2016 Share Posted June 14, 2016 Полностью одинаковые строки, но в одной значение поля "Состав" скопировано из админки, а второе символ-в-символ набрано вручную. Поле из админки загрузилось идеально, а набранное вручную - нет. Я там уже немного занервничал, поэтому скопировал обе строки в ворд и включил отображение невидимых символов. Но нет, строки были идентичны, я в масштабе 400% чуть ли не с лупой рассматривал. Сейчас вот не спеша ползаю по файл-менеджеру, ищу файл, ответственный за импорт. Видимо, других путей разобраться нет. Не забывайте, что символы "c", "o", "a" в латинице и кириллице выглядят одинакого, но на самом деле имеют разные коды. Я с этим столкнулся когда артикулы выглядели одинаково, а воспринимались как разные. 1 Link to comment Share on other sites More sharing options...
theOrange Posted June 15, 2016 Author Share Posted June 15, 2016 Всё, разобрался. В том числе и благодаря Вашей наводке. Во-первых, посмотрел код. Там строка с характеристиками сначала делится на части, разделённые запятыми, то есть ситуация, когда в подстроке окажется запятая в принципе невозможна. Потом я залез в админку, скопировал значение поля характеристики с запятыми, которое у меня успешно загружалось, и вставил в онлайн-конвертер ASCII кодов. Прекрасно! Оказывается там была не запятая, а "Нижняя одинарная открывающая кавычка". Человек, который до меня работал с сайтом, видимо, таким костылём обошёл невозможность загрузки строк с запятыми. Теперь, получив однозначный ответ, при генерации csv просто использую "~" в качестве разделителя значений. Спасибо. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now