Clicky

Skocz do zawartości


Zdjęcie
- - - - -

import danych z CSV do bazy danych

6 odpowiedzi w tym temacie
csv import mysql

  • Zaloguj się, aby dodać odpowiedź

#1 Pitu

Pitu

    Początkujący

  • Użytkownik
  • Pip
  • 55 postów
  • Skąd:Koszalin

Napisano 05 grudzień 2013 - 20:17

Muszę wykonać import stanów ilościowych z Subiekta do sklepu. Proces wygląda następująco:

 

- pobieram z bazy sklepu towary z wpisanym kodem subiekt

- wczytuje csv z danymi

 

Pytanie jak najlepiej to wykonać?

 

Nie przychodzi mi nic do głowy po za:

 

-pętla z danymi z pliku csv

-w środku przy każdej iteracji sprawdzam w tablicy z orm czy kod pasuje do kodu z pliku csv.

-jeżeli tak to wykonuje aktulizacje itp.

 

Przy 1000 produktów w csv i 1000 w sklepie, przy moim założeniu dwie pętle zrobią łącznie 1000000 iteracji.

 

 

 

Jakiś inny pomysł? Dodam, że import CSV odpada.



#2 mck

mck

    Jestę Blogerę

  • Admin
  • 1544 postów

Napisano 05 grudzień 2013 - 22:03

Możesz na początku pobrać kody z bazy i sprawdzać w pętli przetwarzającej linie z csv. W sumie wyjdzie 1001 iteracji. Dalej możesz zapis do bazy grupować w paczki - rozmiar w zależności od ilości danych, ale jeśli to tylko stany magazynowe, to możesz puszczać po 100 - to da 11 iteracji. Słabe punkty to dostępna pamięć i limit czasu wykonywania - jeśli możesz odpalaj to z crona, jeśli nie, to ratuje Cię tylko ini_set() z max_execution_time i memory_limit.



#3 phpion

phpion

    Senior Mastah

  • Użytkownik
  • PipPipPip
  • 774 postów
  • Skąd:Sosnowiec, Dąbrowa Górnicza

Napisano 06 grudzień 2013 - 10:36

Ja bym zasugerował inne rozwiązanie. Dane z CSV ładujesz poprzez LOAD DATA do tabeli tymczasowej, a następnie aktualizujesz dane w tabeli właściwej tymi z tabeli tymczasowej. Całość zamykasz zatem w 2 zapytaniach, wszystko odbywa się po stronie bazy.


Notifero - Technologie Informatyczne | Warsztat: Kohana 3.x/2.x + PostgreSQL/MySQL | Programista Kohana

#4 trze_

trze_

    Początkujący

  • Użytkownik
  • Pip
  • 1 postów

Napisano 06 grudzień 2013 - 13:48

rozwiązanie phpion będzie najbardziej najszybsze,

całą operację zamkniesz w kilka min



#5 Pitu

Pitu

    Początkujący

  • Użytkownik
  • Pip
  • 55 postów
  • Skąd:Koszalin

Napisano 06 grudzień 2013 - 15:15

Ok rozważę to. Dodam, że proces będzie odbywał się kilkanaście razy w ciągu dnia.

 

Czy na zwykłym przeciętnym hostingu ładownie plików przez load data będzie możliwe? Strona wykonywana jest dla klienta i ma działać na zwykłym hostingu.



#6 phpion

phpion

    Senior Mastah

  • Użytkownik
  • PipPipPip
  • 774 postów
  • Skąd:Sosnowiec, Dąbrowa Górnicza

Napisano 09 grudzień 2013 - 09:05

Powinno być możliwe, ale głowy nie dam czy ktoś tego nie przyblokuje.


Notifero - Technologie Informatyczne | Warsztat: Kohana 3.x/2.x + PostgreSQL/MySQL | Programista Kohana

#7 Grzegorz Kowalski

Grzegorz Kowalski

    Początkujący

  • Użytkownik
  • Pip
  • 6 postów
  • Skąd:Warszawa

Napisano 09 grudzień 2013 - 10:14

-pętla z danymi z pliku csv

-w środku przy każdej iteracji sprawdzam w tablicy z orm czy kod pasuje do kodu z pliku csv.

-jeżeli tak to wykonuje aktulizacje itp.

 

Przy 1000 produktów w csv i 1000 w sklepie, przy moim założeniu dwie pętle zrobią łącznie 1000000 iteracji.

 

Czyli że najpierw jedną pętlą iterujesz po zawartości pliku CSV i dla każdego wiersza danych iterujesz po pewnej tablicy, aby odnaleźć pewne ID, tak? Hmm, jeżeli miałbyś możliwość posortować dane wczytane z tego CSV według kodu/ID oraz posortować dane w tej tablicy z ORM wedle tego samego kryterium, wówczas mógłbyś opracować bardzo wydajny algorytm przeszukiwania jednego i drugiego celem znajdywania zgodnych elementów. Ewentualnie mógłbyś odnaleźć i zaadaptować jakiś algorytm używany do rozwiązywania analogicznych problemów np. zwracania części wspólnej dwóch tablic albo wykrywania części wspólnej dwóch plików. W PHP istnieją wbudowane funkcje takie jak array_intersect oraz array_diff, które można zaadaptować do tego zadania. Podobno nie są najwydajniejsze, ale społeczność PHP zapewne ma wiele do zaproponowania. Zresztą, algorytmy dla tego problemu znajdziesz pewnie w każdym języku programowania.







Również z jednym lub większą ilością słów kluczowych: csv, import, mysql

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych