Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Zamiana ciagu liczb na date
jaco1410
post
Post #1





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 30.12.2010

Ostrzeżenie: (0%)
-----


Hej,

importuje plik csv do bazy mysql, niestety w pliku data jest w formacie: 20140127, więc do bazy trafia w formacie: 0000-00-00 a
chciałbym aby w bazie była w formacie daty.

jakieś podpowiedzi jak to zrobić, nie musi być w locie, może być póżniej skryptem zamieniane.

dzięki
pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
matiit
post
Post #2





Grupa: Zarejestrowani
Postów: 365
Pomógł: 70
Dołączył: 5.04.2009

Ostrzeżenie: (0%)
-----


  1. date('Y-m-d', strtotime('20140127'));
Go to the top of the page
+Quote Post
jaco1410
post
Post #3





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 30.12.2010

Ostrzeżenie: (0%)
-----


A masz może jakiś pomysł aby zoptymalizować ten kod poniżej, rekordów w bazie jest ok 6000, i oczywiście php wywala błąd przekroczenia czasu(standardowo 30sec), ale po 2 min. to samo smile.gif

  1. $sql02 = "SELECT * FROM stock";
  2. $result02 = mysql_query($sql02) or die(mysql_error());
  3. while($row02 = mysql_fetch_array($result02)){
  4. $data = date('Y-m-d', strtotime($row02[stock_tmp_cn_date]));
  5. $sql03= "UPDATE stock SET stock_cn_date='$data' WHERE stock_id='$row02[stock_id]'";
  6. $result03=mysql_query($sql03);
  7. }



dzięki
pozdrawiam
Go to the top of the page
+Quote Post
matiit
post
Post #4





Grupa: Zarejestrowani
Postów: 365
Pomógł: 70
Dołączył: 5.04.2009

Ostrzeżenie: (0%)
-----


Pierwsza rzecz to Zamiast SELECT * pobieraj tylko te kolumny, które wykorzystujesz.

Kolejna rzecz którą możesz zrobić to niech program najpierw wygeneruje wszystkie UPDATE'y, sklei je stawiając ; pomiędzy kolejnymi UPDATE'ami i na koniec wykonać wszystkie SQLe na raz:
http://us2.php.net/manual/en/mysqli.multi-query.php

Ten post edytował matiit 6.02.2014, 21:03:48
Go to the top of the page
+Quote Post
jaco1410
post
Post #5





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 30.12.2010

Ostrzeżenie: (0%)
-----


Hej,

nie mam pomysłu jak wygenerować wszystkie UPDATE`y, nie mówiąc o ich sklejeniu i postawieniu ;,
jakaś podpowiedź ?
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #6





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


Skoro masz syf w pliku, to aby nie "zepsuć sobie bazy" zaimportuj to do NOWEJ tabeli, tak by wszystko sie zaimportowało poprawnie za pomocą LOAD DATA, bo to najszybszy sposób. Potem sobie z jednej tabeli do drugiej przerzucisz prostym SQLem.
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat(jaco1410 @ 6.02.2014, 20:29:29 ) *
A masz może jakiś pomysł aby zoptymalizować ten kod poniżej, rekordów w bazie jest ok 6000, i oczywiście php wywala błąd przekroczenia czasu(standardowo 30sec), ale po 2 min. to samo smile.gif

  1. $sql02 = "SELECT * FROM stock";
  2. $result02 = mysql_query($sql02) or die(mysql_error());
  3. while($row02 = mysql_fetch_array($result02)){
  4. $data = date('Y-m-d', strtotime($row02[stock_tmp_cn_date]));
  5. $sql03= "UPDATE stock SET stock_cn_date='$data' WHERE stock_id='$row02[stock_id]'";
  6. $result03=mysql_query($sql03);
  7. }



dzięki
pozdrawiam

Zamiast tego calego kodu php, wszystko nalezy zrobic tylko jednym zapytaniem SQL
  1. UPDATE stock SET stock_cn_date = DATE_FORMAT(stock_tmp_cn_date, '%Y-%m-%d');

I juz. Sekunda roboty i po sprawie.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
jaco1410
post
Post #8





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 30.12.2010

Ostrzeżenie: (0%)
-----


Dzięki nospor, o to chodziło, możesz polecić jakąś książkę gdzie takiej tajemnej wiedzy można nabyć smile.gif

pozdrawiam.
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Manual mysql. A ta tajemna wiedza o ktora pytasz to podstawy mysql wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 11:51