Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Загрузка файла CSV в MYSQL
Форумы портала PHP.SU » » Работа с файловой системой и файлами » Загрузка файла CSV в MYSQL

Страниц (1): [1]
 

1. Napst3r - 20 Октября, 2015 - 17:54:51 - перейти к сообщению
Доброго времени суток. Имеется обработчик, который обрабатывает CSV файл и загружает его в БД. Информация такого плана- наличие, цены и тд. Недавно добавили еще одно поле, где через запятую указаны id товаров (скажем, сопутствующих товаров). Проблема в следующем - когда правлю обработчик, то в БД записывается только первое значение из нескольких, указанных через запятую. id разделены запятыми и, наверное, обработчик думает, что следующее значение после запятой не относится в нужной ячейке. Вопрос- как заставить обработчик записывать всю строку полностью в ячейку? Может поменять тип самого столбца в БД? Заранее благодарен.
2. Мелкий - 20 Октября, 2015 - 19:12:25 - перейти к сообщению
Одну минуту, соберу свежий libastral и протру хрустальный шар. Таааак..
Да, вижу проблему. У вас неправильно спроектирована схема базы данных. Писать какие-то идентификаторы в одно поле через запятую или другой разделитель - отвратная идея. Используйте нормальную таблицу связей и, соответственно этому, поправьте логику вашего импорта CSV.
3. Napst3r - 20 Октября, 2015 - 21:26:06 - перейти к сообщению
Мелкий пишет:
Одну минуту, соберу свежий libastral и протру хрустальный шар. Таааак..
Да, вижу проблему. У вас неправильно спроектирована схема базы данных. Писать какие-то идентификаторы в одно поле через запятую или другой разделитель - отвратная идея. Используйте нормальную таблицу связей и, соответственно этому, поправьте логику вашего импорта CSV.


Да я бы с радостью, но csv файл выгружается из 1с, этим занимается другой человек, сам в 1с не понимаю и приходится работать с тем, что есть.
4. SAD - 20 Октября, 2015 - 21:37:29 - перейти к сообщению
коллега намекает на то, что Вы не привели пример Вашего кода....
5. Napst3r - 20 Октября, 2015 - 22:33:44 - перейти к сообщению
SAD пишет:
коллега намекает на то, что Вы не привели пример Вашего кода....


$item_1=intval(eregi_replace(' ','',$item[1]));
$sql = 'UPDATE item SET '.' accesories="'.$item_1.'"'
$result = mysql_query($sql);

Вот кусок кода, который обрабатывает нужную ячейку. Вроде задача не такая уж и сложная, но целый день не могу ее победить(
6. Мелкий - 20 Октября, 2015 - 22:44:12 - перейти к сообщению
Ни кода, ни схемы базы - ничего.

Napst3r пишет:
но csv файл выгружается из 1с

И каким образом это волнует вас? Да хоть телеметрия со спутника.
Входящий формат данных не может определять, как данные хранить вам. Его может быть из-за формата неудобно обрабатывать, но как у себя в базе хранить данные - решаете именно вы.
В CSV банально невозможно адекватно отразить связи М:М, поэтому там список id через разделитель вполне уместен и даже удобен для последующего импорта с нормальную реляционную схему.
7. Napst3r - 20 Октября, 2015 - 22:54:50 - перейти к сообщению
Мелкий пишет:
Ни кода, ни схемы базы - ничего.

Napst3r пишет:
но csv файл выгружается из 1с

И каким образом это волнует вас? Да хоть телеметрия со спутника.
Входящий формат данных не может определять, как данные хранить вам. Его может быть из-за формата неудобно обрабатывать, но как у себя в базе хранить данные - решаете именно вы.
В CSV банально невозможно адекватно отразить связи М:М, поэтому там список id через разделитель вполне уместен и даже удобен для последующего импорта с нормальную реляционную схему.




Файл выгружается из 1с, далее запускается файл, который этот файл обрабатывает и загружает в БД в соответсвующие ячейки. Часть кода обработчика выше.
Поле Тип Сравнение Атрибуты Null По умолчанию Дополнительно
accessories varchar(255) cp1251_general_ci Да NULL
8. Napst3r - 21 Октября, 2015 - 08:34:59 - перейти к сообщению
Забыл уточнить, что я сам по себе не программист и начал заниматься этим из-за необходимости пару месяцев назад. Если есть возможность обработать данные через запятую из одной ячейки и рассортировать их по отдельным ячейкам в БД, буду признателен, если подскажете как.

 

Powered by ExBB FM 1.0 RC1