Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Import bazy przez konsolę
Forum PHP.pl > Forum > Przedszkole
lukash82
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.
erix
A czytałeś tematy o polskich znakach?
lukash82
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, Ł
erix
A próbowałeś dać set names utf8 na początku pliku zrzutu i wtedy go zaimportować?
lukash82
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...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.