Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL] Import bazy przez konsolę
lukash82
post 18.09.2009, 09:49:32
Post #1





Grupa: Zarejestrowani
Postów: 320
Pomógł: 2
Dołączył: 17.03.2006
Skąd: Siemianowice

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


Witam. Mam takie pytanko odnośnie kodowania plików. Temat już wałkowany nie raz ale ten przypadek jest prawdopodobnie dosyć często spotykany, a nie udało mi się znaleźć nigdzie rozwiązania działającego od A do Z dobrze...

A więc mam plik bazy danych, nazwijmy go baza.sql zapisany w notatniku czyli z windowsowym kodowaniem ANSI lub UTF-8. Żeby było trudniej to ma on np. 17mb więc import przez phpMyAdmina odpada...

Tworzę bazę na serwerze z kodowaniem UTF-8 i metodą porównywania napisów utf8_polish_ci

Tworzę tabele danych przez phpMyAdmina poleceniem:
  1. CREATE TABLE IF NOT EXISTS `tabela_w_bazie` (
  2. `pole1` mediumint(6) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `pole2` char(6) collate utf8_polish_ci NOT NULL,
  4. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;
  5.  


I teraz wykorzystuję polecenie z konsoli aby zaimportować plik bazy do tabeli czyli:

mysql -h adres_serwera -u uzytkownik -p nazwa_bazy < baza.sql


Baza ładnie się importuje ale niestety okazuje się że zamiast polskich znaków mamy krzaki...

Teoretycznie można zrobić odpowiednie połączenie z bazą, np.
  1. mysql_query("SET NAMES 'utf8_polish_ci'");
  2.  

ale to jest dobre na krótką metę... Co jeśli zrobimy na stronie wyszukiwarkę i użytkownik wpisze słowo np. "łyżeczka". Jak porównać te słowo z tymi krzakami w bazie? Prawdopodobnie jest gdzieś błąd na etapie importu bazy czy też zapisywania plików z odpowiednim kodowaniem... Ale niestety próbowałem już na różne sposoby a krzaki jak są tak są:/ Jeśli ktoś wie jak sobie z tym poradzić na działającym przykładzie to proszę o jakąś podpowiedź. Pozdrawiam, Łukasz.

Ten post edytował lukash82 18.09.2009, 09:51:17
Go to the top of the page
+Quote Post
erix
post 18.09.2009, 11:04:03
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A czytałeś tematy o polskich znakach?


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
lukash82
post 18.09.2009, 14:51:42
Post #3





Grupa: Zarejestrowani
Postów: 320
Pomógł: 2
Dołączył: 17.03.2006
Skąd: Siemianowice

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


Tak, czytałem tematy o polskich znakach...

Ale co z tego że nie działa to w moim przypadku... Przekonwertowałem pliki gżegżółką do utf8, iso8859-2, win-1250. Stworzyłem bazy z takimi kodowaniami. I dalej mam krzaki w bazie... Może ktoś z Was ma na to sprawdzony sposób... Pozdrawiam, Ł
Go to the top of the page
+Quote Post
erix
post 18.09.2009, 15:18:48
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A próbowałeś dać set names utf8 na początku pliku zrzutu i wtedy go zaimportować?


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
lukash82
post 18.09.2009, 16:42:46
Post #5





Grupa: Zarejestrowani
Postów: 320
Pomógł: 2
Dołączył: 17.03.2006
Skąd: Siemianowice

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


Witam, sprawa wygląda tak, że w bazie już są krzaki i nie mam innego źródła żeby to wyeksportować z innego miejsca... Baza ma kodowanie utf8_polish_ci i w konsoli eksportuje ją poleceniem

mysqldump --default-character-set=utf8 -h adres_serwera -u użytkownik -p -e nazwa_bazy > zrzut.sql

w pliku wynikowym też mam krzaki zamiast polskich liter także import z tego pliku niestety nic nie daje bo krzaki przechodzą do bazy z powrotem. Ogólnie do wyciągania z bazy ustawiam sobie przy połączeniu
  1. mysql_query("SET NAMES 'utf8_polish_ci'")

i jest ok. Ale problem jest w momencie, gdy chcę coś znaleźć w bazie, tzn gdy w powiedzmy wyszukiwarce na stronie wpiszę polskie znaki i mam je porównać z tymi krzakami w bazie...

Ten post edytował lukash82 18.09.2009, 16:43:51
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 Wersja Lo-Fi Aktualny czas: 12.07.2025 - 12:00