Piotr Krajewski

Piotr Krajewski web application
programmer

Temat: problem z importem bazy

Witam serdecznie,

ostatnio miałem do przeniesienia dużą bazę danych - dostałem już wyeksportowaną do takiej postaci (to jest rzecz jasna phpbb):


DROP TABLE IF EXISTS `phpbb_forums`;
CREATE TABLE `phpbb_forums` (
`forum_id` mediumint(8) unsigned NOT NULL auto_increment,
`parent_id` mediumint(8) unsigned NOT NULL default '0',
`left_id` mediumint(8) unsigned NOT NULL default '0',
`right_id` mediumint(8) unsigned NOT NULL default '0',
`forum_parents` mediumtext collate utf8_bin NOT NULL,
`forum_name` varchar(255) collate utf8_bin NOT NULL default '',
`forum_desc` text collate utf8_bin NOT NULL,
`forum_desc_bitfield` varchar(255) collate utf8_bin NOT NULL default '',
`forum_desc_options` int(11) unsigned NOT NULL default '7',
`forum_desc_uid` varchar(8) collate utf8_bin NOT NULL default '',
`forum_link` varchar(255) collate utf8_bin NOT NULL default '',
`forum_password` varchar(40) collate utf8_bin NOT NULL default '',
`forum_style` mediumint(8) unsigned NOT NULL default '0',
`forum_image` varchar(255) collate utf8_bin NOT NULL default '',
`forum_rules` text collate utf8_bin NOT NULL,
`forum_rules_link` varchar(255) collate utf8_bin NOT NULL default '',
`forum_rules_bitfield` varchar(255) collate utf8_bin NOT NULL default '',
`forum_rules_options` int(11) unsigned NOT NULL default '7',
`forum_rules_uid` varchar(8) collate utf8_bin NOT NULL default '',
`forum_topics_per_page` tinyint(4) NOT NULL default '0',
`forum_type` tinyint(4) NOT NULL default '0',
`forum_status` tinyint(4) NOT NULL default '0',
`forum_posts` mediumint(8) unsigned NOT NULL default '0',
`forum_topics` mediumint(8) unsigned NOT NULL default '0',
`forum_topics_real` mediumint(8) unsigned NOT NULL default '0',
`forum_last_post_id` mediumint(8) unsigned NOT NULL default '0',
`forum_last_poster_id` mediumint(8) unsigned NOT NULL default '0',
`forum_last_post_subject` varchar(255) collate utf8_bin NOT NULL default '',
`forum_last_post_time` int(11) unsigned NOT NULL default '0',
`forum_last_poster_name` varchar(255) collate utf8_bin NOT NULL default '',
`forum_last_poster_colour` varchar(6) collate utf8_bin NOT NULL default '',
`forum_flags` tinyint(4) NOT NULL default '32',
`display_subforum_list` tinyint(1) unsigned NOT NULL default '1',
`display_on_index` tinyint(1) unsigned NOT NULL default '1',
`enable_indexing` tinyint(1) unsigned NOT NULL default '1',
`enable_icons` tinyint(1) unsigned NOT NULL default '1',
`enable_prune` tinyint(1) unsigned NOT NULL default '0',
`prune_next` int(11) unsigned NOT NULL default '0',
`prune_days` mediumint(8) unsigned NOT NULL default '0',
`prune_viewed` mediumint(8) unsigned NOT NULL default '0',
`prune_freq` mediumint(8) unsigned NOT NULL default '0',
PRIMARY KEY (`forum_id`),
KEY `left_right_id` (`left_id`,`right_id`),
KEY `forum_lastpost_id` (`forum_last_post_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

INSERT INTO `phpbb_forums` (`forum_id`, `parent_id`, `left_id`, `right_id`, `forum_parents`, `forum_name`, `forum_desc`, `forum_desc_bitfield`, `forum_desc_options`, `forum_desc_uid`, `forum_link`, `forum_password`, `forum_style`, `forum_image`, `forum_rules`, `forum_rules_link`, `forum_rules_bitfield`, `forum_rules_options`, `forum_rules_uid`, `forum_topics_per_page`, `forum_type`, `forum_status`, `forum_posts`, `forum_topics`, `forum_topics_real`, `forum_last_post_id`, `forum_last_poster_id`, `forum_last_post_subject`, `forum_last_post_time`, `forum_last_poster_name`, `forum_last_poster_colour`, `forum_flags`, `display_subforum_list`, `display_on_index`, `enable_indexing`, `enable_icons`, `enable_prune`, `prune_next`, `prune_days`, `prune_viewed`, `prune_freq`) VALUES (1, 30, 22, 23, 0x613a313a7b693a33303b613a323a7b693a303b733a363a22506f72616479223b693a313b693a303b7d7d, 0x507974616e696120646f20656b737065727461, 0x547574616a206d6fbf65737a207a616461e620707974616e696520204a65727a656d75204c6563686f7769206e61737a656d7520656b73706572746f7769207a20647a6965647a696e7920666f746f6772616669692e200a4e6120666f72756d206f626f7769b17a756a65207a61736164613a206a65646e6f20707974616e69652d6a65646e61206f64706f77696564bc2e20507974616e6965206d6fbf65207a617769657261e620646f20323530207a6e616bf3772e, '', 7, '', '', '', 0, '', '', '', '', 7, '', 0, 1, 0, 4043, 927, 927, 5726, 1109, 0x52653a2044594652414b434a41, 1267054416, 0x446f726f74614d, '', 32, 1, 1, 1, 0, 0, 0, 0, 0, 0);


tu dałem przykład jednego inserta w jakiej on jest postaci.
Moje pytanie brzmi: czemu jeśli wklepuje w phpmyadmina ten kod to np. w forum_name w bazie jest: "Lampy b" zamiast "Lampy błyskowe" moje pytanie czemu tak jest i czy da się coś z tym zrobić?
Paweł Gizan

Paweł Gizan Full Stack
Developer, Aclari
Diamonds

Temat: problem z importem bazy

ewidentnie nie przechodzą polskie znaki...

spróbuj dać przed tym set names ...
Piotr Krajewski

Piotr Krajewski web application
programmer

Temat: problem z importem bazy

próbowałem set names dawać zarówno latin2 jak i utf8 niestety nie przyniosło to oczekiwanych efektów (dodatkowo próbowałem z trybem zgodnosci ASCII - też nic).
Paweł Gizan

Paweł Gizan Full Stack
Developer, Aclari
Diamonds

Temat: problem z importem bazy

zobacz w jakim kodowaniu masz phpmyadmina... możliwe że on wysyłając przekodowuje znaki.
Piotr Krajewski

Piotr Krajewski web application
programmer

Temat: problem z importem bazy

hmmm

mam coś takiego:
MySQL charset: cp1252 West European (latin1)
MySQL connection collation: utf8_unicode_ci

czy to oznacza ze musze importować w trybie latin1 ?
(pytam się na zapas bo dopiero z wieczora bede mógł przetestować :D)
Piotr Krajewski

Piotr Krajewski web application
programmer

Temat: problem z importem bazy

niestety nie przyniosło to jakiegokolwiek efektu
Marcin Lenkowski

Marcin Lenkowski Szukasz
programistów?
Zapraszamy do
Exulto!

Temat: problem z importem bazy

a może spróbuj rozwiaząć to plikiem (import w PMA).Marcin Lenkowski edytował(a) ten post dnia 11.03.10 o godzinie 19:02
Piotr Krajewski

Piotr Krajewski web application
programmer

Temat: problem z importem bazy

co masz na myśli pisząć "rozwiązać to plikiem" ?
jeżeli chodzi o zwykły import - tzn zakłądka w phpmyadmin -> wybierz plik to właśnie tak też robiłem. Efektów nie przyniosło.
Piotr Krajewski

Piotr Krajewski web application
programmer

Temat: problem z importem bazy

co masz na myśli pisząć "rozwiązać to plikiem" ?
jeżeli chodzi o zwykły import - tzn zakłądka w phpmyadmin -> wybierz plik to właśnie tak też robiłem. Efektów nie przyniosło.
Piotr Krajewski

Piotr Krajewski web application
programmer

Temat: problem z importem bazy

co masz na myśli pisząć "rozwiązać to plikiem" ?
jeżeli chodzi o zwykły import - tzn zakłądka w phpmyadmin -> wybierz plik to właśnie tak też robiłem. Efektów nie przyniosło.
Piotr Krajewski

Piotr Krajewski web application
programmer

Temat: problem z importem bazy

co masz na myśli pisząć "rozwiązać to plikiem" ?
jeżeli chodzi o zwykły import - tzn zakłądka w phpmyadmin -> wybierz plik to właśnie tak też robiłem. Efektów nie przyniosło.
Piotr Krajewski

Piotr Krajewski web application
programmer

Temat: problem z importem bazy

co masz na myśli pisząć "rozwiązać to plikiem" ?
jeżeli chodzi o zwykły import - tzn zakłądka w phpmyadmin -> wybierz plik to właśnie tak też robiłem. Efektów nie przyniosło.
Marcin K.

Marcin K. Programowanie jest
moim powołaniem,
Alleluja

Temat: problem z importem bazy

Możesz zrobić innym narzędziem
http://www.mysql.com/downloads/workbench/

Zastępuje dawnego MySQL Administrator

Lub poleceniem shell-a

http://dev.mysql.com/doc/refman/5.0/en/mysqlimport.html

//--- dla phpbb
Dodane do bazy może być ok tylko może w phpbb jest ustawione inaczej podczas połączenia z bazą. Jeśli baza została dodana a phpbb nie jest w trybie set names utf8 to też tak będzie robiło

//--- dla phpmyadmin
nawet jeśli w phpmyadminie wyświetla się źle, ale już na stronie jest ok to chyba nie jest to problem, bo działa jak powinno ;)Marcin K. edytował(a) ten post dnia 12.03.10 o godzinie 16:26
Paweł Gizan

Paweł Gizan Full Stack
Developer, Aclari
Diamonds

Temat: problem z importem bazy

Marcin K.:
Lub poleceniem shell-a

http://dev.mysql.com/doc/refman/5.0/en/mysqlimport.html


lub
cat nazwapliku.sql | mysql -u user -p baza

konto usunięte

Temat: problem z importem bazy

do importu , eksportu nie uzywaj zadnych phpmyadminow ani nie kombinuj z kodowaniem. To cie przeciez nie bedzie obchodzic.
zrob po prostu tak :

1.sposob :

mysqldump -htwojhost -uuzytkowik -phaslo nazwabazy (opcjonalnie nazwa tabeli) > plik.sql

pozniej jak juz masz plik

mysql -htwojhost -uuzytkowik -phaslo (opcjonalnie nazwabazy) < plik.sql

2. sposob

logujesz sie do mysql przez konsole :

mysql -htwojhost -uuzytkowik -phaslo

mysql> show create table phpbb_forums;

zapisz sobie cala definicje tabeli.

pozniej :

mysql> select * from phpbb_forums into outfile '/tmp/phpbb_forums.csv';

mozesz sobie skopiowac plik scp'em na odp serwer do katalogu '/tmp'
ten katalog zazwyczaj jest widoczny dla mysql domyslnie.

logujesz sie do nowej bazy

mysql> load data infile '/tmp/phpbb_forums.csv' into table phpbb_forums;

nawet jak sie gdzies dziabnąłem to myślę, że to powinno pomóc.

TE SPOSOBY MOZNA UZYWAC ZAMIENNIE DO SAMYCH TABEL LUB DO CALYCH BAZ. WLEWANIE DANYCH ZA POMOCA csv jest szybsze gdyz najpierw dbamy o to by pliki z danymi zostaly przegrane na serwer gdzie lezy sama baza danych , aczkolwiek nie zawsze mamy to takiego serwera dostep. dlatego czesto jest tak ze musimy uzyc zwyklego mysqldumpa i mysql'a.

Pozdro koleżko
Maciej S.

Maciej S. System/Network
Administrator

Temat: problem z importem bazy

Paweł Gizan:

lub
cat nazwapliku.sql | mysql -u user -p baza

A po co ten wszechobecny cat? Czyż nie prościej:
mysql <params> < dumpfile
Maciej S.

Maciej S. System/Network
Administrator

Temat: problem z importem bazy

Łukasz Sztygiel:
do importu , eksportu nie uzywaj zadnych phpmyadminow ani nie kombinuj z kodowaniem. To cie przeciez nie bedzie obchodzic.
zrob po prostu tak :
[ c i a c h ]
2. sposob

logujesz sie do mysql przez konsole :

mysql -htwojhost -uuzytkowik -phaslo
mysql> show create table phpbb_forums;

zapisz sobie cala definicje tabeli.
pozniej :

mysql> select * from phpbb_forums into outfile '/tmp/phpbb_forums.csv';

mozesz sobie skopiowac plik scp'em na odp serwer do katalogu '/tmp'
ten katalog zazwyczaj jest widoczny dla mysql domyslnie.

logujesz sie do nowej bazy

mysql> load data infile '/tmp/phpbb_forums.csv' into table phpbb_forums;

Co do sposobu nr 2 - ręki sobie uciąć nie dam, ale chyba żeby stosować OUT/INFILE, trzeba mieć granta FILE - może nie mieć takich uprawnień, pomimo ALL na konretne db.table...

Jeżeli masz dostęp do shella, to mysqldump po ssh od razu na drugą maszynę i ,,w locie'' mysql, no chyba że chcesz sobie plik zachować.Maciej Suszko edytował(a) ten post dnia 21.04.10 o godzinie 18:05

Następna dyskusja:

Problem z pobraniem bazy da...




Wyślij zaproszenie do