MySQL + PHP = problem z kodowaniem

Listopad 2nd, 2010

Mam plik zakodowany w UTF8 i bazę danych w MySQL która ma ustawione kodowanie tabel na utf8_polish_ci. Z pomocą php chcę ją wypełnić. Niestety mimo wielu prób otrzymywałem zamiast polskich liter krzaki…

Rozwiązaniem by po nawiązaniu połączenia zadeklarowanie używanego kodowania, w taki sposób:


$dbh->query('SET NAMES "utf8"');

create table as select where rownum, czyli o tworzeniu kopi tabeli z ograniczeniami

Październik 21st, 2010

Czasem w czasie procesu testowania stworzonych procedur lub większych zapytań sql pojawia się potrzeba częstego ich testowania. Jednak często oryginalne dane, które mamy przetwarzać są zbyt duże by testy przeprowadzać w trakcie powstawania kodu. Dobrym rozwiązaniem tego problemu jest stworzenie kopi tabel z małą próbką testową orginalnych danych.

Kod stworzenia kopi tabeli, gdzie n jest zadaną ilością wierszy kopiowanych:


create table tablica_kopia as
 select * from tablica_orginalna
 where rownum <=n;

Select random, czyli jak wyciagnać z tabeli losowe rekordy

Październik 16th, 2010

Miałem problem jak wyciągnąć kilka tysięcy losowych rekordów z dość sporej tablicy i zapragnąłem znaleźć rozwiązanie w jednym zapytaniu do bazy danych. Oczywiście dzięki bibliotekom udostępnianym przez Oracle takie rozwiązanie jest możliwe. Skorzystałem z pomocy pakietu dbms_random.

A oto kod gotowego zapytania wyciągającego n losowych rekordów z zadanej tabeli:


select * from table_name where row_id in (
select row_id from(
select row_id, dbms_random.value  from table_name order by 2)
where rownum<=n);

Odinstalowywanie Oracle 11g z Windowsa

Październik 2nd, 2010

Wbrew pozorom nie jest takie banalne zadanie. Pierwszym krokiem w takim momencie jest wyłączenie bazy. Wystarczy zalogować się do bazy za pomocą sqlplus jako sysdba i wydać polecenie natychmiastowego zamknięcia bazy:

shutdown immediate

Następnie wielu skieruje swoje kroki do narzędzia firmy Oracle zwanego Universal Installer. Jednak jego uruchomienie i próba odinstalowania całej bazy za jego pomocą skończy się komunikatem z prośbą o zastosowanie innego narzędzia wywoływanego z linik komend. Narzędzie to uruchomimy poleceniem:

C:\ORACLE11g\product\11.2.0\dbhome_1\deinstall>deinstall.bat

Proces deinstalacji bazy Oracle rozpoczyna się od odpowiedzenia na kilka pytań o dokładne szczegóły np. jaką instancje usunąć. Na końcu powinniśmy zobaczyć podobny ekran do poniższego, zawierającego informacje podsumowujące wykonanego zadania, oraz ewentualne napotkane błędy.

Problem z kodowaniem znaków podczas przenoszenia bazy?

Sierpień 17th, 2010

W wypadku gdy do tego celu będziemy wykorzystywać phpMyAdmin jesteśmy narażeni na tego typu problemy.Wynika to między innymi z ustawień kodowania połączenia między aplikacja a serwerem bazy.

Jest jednak rozwiązanie, które ograniczy nam sporo cierpienia mimo, iż na początku może odstraszać wielbicieli webowego interfejsu phpMyAdmin. Myślę tu o wbudowanych narzędziach bazy MySQL o nazwie mysqldump oraz mysql. Obsługa ich odbywa się za pomocą konsoli systemowej.

Gdy chcemy eksportować z bazy danych:

mysqldump --user=XXXXXXXX --password=XXXXXXX --databases DB_NAME1 DB_NAME2 DB_NAME3 > /PATH/TO/DUMPFILE.SQL

Gdy chcemy importować do bazy danych:

mysql --verbose --user=XXXXXXXX --password=XXXXXXXX DB_NAME < /PATH/TO/DUMPFILE.SQL