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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Загрузка файла CSV в MYSQL

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Проблема с обработкой некоторых строк
Napst3r
Отправлено: 20 Октября, 2015 - 17:54:51
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Окт. 2015  


Помог: 0 раз(а)




Доброго времени суток. Имеется обработчик, который обрабатывает CSV файл и загружает его в БД. Информация такого плана- наличие, цены и тд. Недавно добавили еще одно поле, где через запятую указаны id товаров (скажем, сопутствующих товаров). Проблема в следующем - когда правлю обработчик, то в БД записывается только первое значение из нескольких, указанных через запятую. id разделены запятыми и, наверное, обработчик думает, что следующее значение после запятой не относится в нужной ячейке. Вопрос- как заставить обработчик записывать всю строку полностью в ячейку? Может поменять тип самого столбца в БД? Заранее благодарен.
 
 Top
Мелкий Супермодератор
Отправлено: 20 Октября, 2015 - 19:12:25
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Одну минуту, соберу свежий libastral и протру хрустальный шар. Таааак..
Да, вижу проблему. У вас неправильно спроектирована схема базы данных. Писать какие-то идентификаторы в одно поле через запятую или другой разделитель - отвратная идея. Используйте нормальную таблицу связей и, соответственно этому, поправьте логику вашего импорта CSV.


-----
PostgreSQL DBA
 
 Top
Napst3r
Отправлено: 20 Октября, 2015 - 21:26:06
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Окт. 2015  


Помог: 0 раз(а)




Мелкий пишет:
Одну минуту, соберу свежий libastral и протру хрустальный шар. Таааак..
Да, вижу проблему. У вас неправильно спроектирована схема базы данных. Писать какие-то идентификаторы в одно поле через запятую или другой разделитель - отвратная идея. Используйте нормальную таблицу связей и, соответственно этому, поправьте логику вашего импорта CSV.


Да я бы с радостью, но csv файл выгружается из 1с, этим занимается другой человек, сам в 1с не понимаю и приходится работать с тем, что есть.
 
 Top
SAD
Отправлено: 20 Октября, 2015 - 21:37:29
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




коллега намекает на то, что Вы не привели пример Вашего кода....

(Отредактировано автором: 20 Октября, 2015 - 21:37:44)

 
 Top
Napst3r
Отправлено: 20 Октября, 2015 - 22:33:44
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Окт. 2015  


Помог: 0 раз(а)




SAD пишет:
коллега намекает на то, что Вы не привели пример Вашего кода....


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

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



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Ни кода, ни схемы базы - ничего.

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

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


-----
PostgreSQL DBA
 
 Top
Napst3r
Отправлено: 20 Октября, 2015 - 22:54:50
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Окт. 2015  


Помог: 0 раз(а)




Мелкий пишет:
Ни кода, ни схемы базы - ничего.

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

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




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


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Окт. 2015  


Помог: 0 раз(а)




Забыл уточнить, что я сам по себе не программист и начал заниматься этим из-за необходимости пару месяцев назад. Если есть возможность обработать данные через запятую из одной ячейки и рассортировать их по отдельным ячейкам в БД, буду признателен, если подскажете как.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с файловой системой и файлами »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB