загрузить данные в таблицу EAV из файла CSV

Как загрузить данные в таблицу EAV из файла CSV в базе данных MYSQL?

Мой файл CSV выглядит так:

"ID",    "attr1",    "attr2",    "attr3",
"ID1",   "value1",   "value2",   "value3",

Я попытался использовать скрипт для изменения файла CSV в файл EAV CSV, но я думаю, что это не будет масштабироваться.


person user1471283    schedule 29.07.2013    source источник
comment
Таблица существует? Не понятно, что вы спрашиваете...   -  person Neville Kuyt    schedule 29.07.2013
comment
Дубликат: stackoverflow. ком/вопросы/3635166/   -  person rags    schedule 29.07.2013
comment
@rags Указанный вами вопрос не совсем тот, который я задаю.   -  person user1471283    schedule 29.07.2013


Ответы (2)


Вы пытались использовать функцию fgetcsv в PHP? Вручную

Без показа того, что вы пробовали, мы не сможем помочь.

person Shankar Narayana Damodaran    schedule 29.07.2013
comment
Я попытался использовать скрипт для изменения файла CSV в файл EAV CSV, но я думаю, что это не будет масштабироваться. - person user1471283; 29.07.2013
comment
@ user1471283, модель EAV нарушает ссылочную целостность и другие подобные сложности. Ваша БД MySQL спроектирована таким образом? - person Shankar Narayana Damodaran; 29.07.2013
comment
Да. Он построен таким образом. - person user1471283; 29.07.2013

Вы должны преобразовать свой обычный CSV

Max;Mustermann;Hamburg;Am Elbufer 123
Jens;Mander;Manderscheid;Eisgasse 99

в другой CSV с точными тремя полями:

addr01=name=Mustermann
addr01=vname=Max
addr01=ort=Hamburg
addr01=str=Am Elbufer 123
addr02=name=Mander
addr02=vname=Jens
addr02=ort=Manderscheid
addr02=str=Eisgasse 99

Теперь всегда есть 3 поля: Entity, Attribute, Value.

Кстати, в Perl Hash of Hashes также означает EAV:

$EAV = {
    addr01 = {
        name  => 'Mustermann',
        vname => 'Max',
        ort   => 'Hamburg',
        str   => 'Am Elbufer 123',
    },
    addr02 = {
        name  => 'Mander',
        vname => 'Jens',
        ort   => 'Manderscheid',
        str   => 'Eisgasse 99',
    },
};
person Rolf    schedule 06.04.2014