Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Importowanie/eksportowanie baz danych MySQL, phpMyadmin
Endure
post 19.05.2011, 07:44:43
Post #1





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 19.05.2011

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


Cześć. Robię prezentację na temat interakcji Mysql z poziomu PHP zostało mi ostatnie zagadnienie import eksport baz danych MySQL, muszę w najprostszy sposób zademonstrować jaki taki manewr wykonać i uwiecznić go screenami. No i zaczęły się schody :/ W internecie wyczytałem że można tego dokonać za pomocą mysqldump i mysqlimpor, no i tyle konkretów niestety. Druga możliwość to phpMyAdmin, ściągnąłem najnowszą wersję, wypakowałem to htdocs, zmieniłem następujące ustawienia w pliku config.default.php :


Kod:
$cfg['Servers'][$i]['user'] = 'root';

na:
$cfg['Servers'][$i]['user'] = ' root';


Kod:
$cfg['Servers'][$i]['password'] = '';

Na:
$cfg['Servers'][$i]['password'] = 'Na moje hasło do Mysql';

No i nie działa. Może ktoś pomóc, bo już brak mi pomysłów a termin mnie goni sad.gif Oczywiście MySQL, Apache, PHP mam skonfigurowane prawidłowo, wczytuję dane z PHP do MYSQL i w drugą stronę. Apache wersja: 2.2.11, Mysql:mysql-essential-5.1.56, PHP:5.2.2, phpMyAdmin: 3.4.0-all-languages . Chyba że jest jeszcze jakiś iny sposób na eksport i import.
Go to the top of the page
+Quote Post
blooregard
post 19.05.2011, 07:50:24
Post #2


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




eksport:

mysqldump -u root -p -h [host] --database nazwa_bazy >> nazwa_pliku_ze_zrzutem.sql

import:

mysql -u root -p -h [host] nazwa_bazy < nazwa_pliku_ze_zrzutem.sql

Nazwę hosta możesz pominąć jeśli wykonujesz to na lokalu.
Powód edycji: [blooregard]:


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
zbig
post 19.05.2011, 07:57:51
Post #3





Grupa: Zarejestrowani
Postów: 144
Pomógł: 30
Dołączył: 5.05.2007
Skąd: Mannheim

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


Ustawienia PhpMyAdmin zmieniasz w pliku config.inc.php.
Lepiej jednak zrobic to tak jak napisal blooregard.
Zobacz tutaj http://dev.mysql.com/doc/refman/5.1/de/mysqldump.html . Wedlug specyfikacji MySql syntax jest jednak troszke inny : mysqldump --opt db_name > backup-file.sql

Pozdrawiam


--------------------
Flash Flex PHP JAVA RED5 http://www.easyweb24.net
Go to the top of the page
+Quote Post
blooregard
post 19.05.2011, 08:13:23
Post #4


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Cytat(zbig @ 19.05.2011, 08:57:51 ) *
Ustawienia PhpMyAdmin zmieniasz w pliku config.inc.php.
Lepiej jednak zrobic to tak jak napisal blooregard.
Zobacz tutaj http://dev.mysql.com/doc/refman/5.1/de/mysqldump.html . Wedlug specyfikacji MySql syntax jest jednak troszke inny : mysqldump --opt db_name > backup-file.sql

Pozdrawiam


No tak, dokładna składnia polecenia różni się od tej, co podałem, w zależności od tego, co jest akurat wymagane/potrzebne w zrzucie smile.gif

Niemniej jednak, zrzut bazy poprzez mysqldump to najszybszy sposób, szczególnie przy bazach zawierających wiele tysięcy rekordów.


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
Endure
post 19.05.2011, 11:07:16
Post #5





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 19.05.2011

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


Dzięki wielkie za szybką i konkretną odpowiedzi.Teraz powiedzcie mi czy dobrze robię: piszę skrypt w php:
  1. <?php
  2. mysqldump --[options] dom > backup-file.sql
  3. ?>

Nie idzie pisze: Parse error: syntax error, unexpected T_DEC in C:\Apache\htdocs\eksport.php on line 2 . Jak ma to przebiegać? Sorry za takie głupie pytania, ale naprawdę jestem początkujący :/

Edit:

Tak sobie sprawdzając możliwości MySQL natknąłem się na MySQL Administrator, i nie wiem czy dobrze pojmuje ale tu chyba jest możliwość eksportu i importu baz danych, po lewej stronie znajduję się menu i tam mam Backup, Restore. Klikam Backup i tam mam swoją bazę danych klikam execute Backup np no i chyba ją eksportuje plik się zapisuje z rozszerzeniem .sql zawartość pliku po otwarciu programem Notepad wygląda:

-- MySQL Administrator dump 1.4
--
-- ------------------------------------------------------
-- Server version 5.1.56-community


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;


--
-- Create schema dom
--

CREATE DATABASE IF NOT EXISTS dom;
USE dom;

--
-- Definition of table `testowa`
--

DROP TABLE IF EXISTS `testowa`;
CREATE TABLE `testowa` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`pole` varchar(75) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;

--
-- Dumping data for table `testowa`
--

/*!40000 ALTER TABLE `testowa` DISABLE KEYS */;
INSERT INTO `testowa` (`id`,`pole`) VALUES
(1,'dawid'),
(2,'emil'),
(3,'donia');
/*!40000 ALTER TABLE `testowa` ENABLE KEYS */;




/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;


Tak ma to wyglądać? No i teraz mogę sobie ten plik skopiować na pamięć przenośną i importować W Mysql Administaor za pomocą Restore?

Ten post edytował Endure 19.05.2011, 11:55:11
Go to the top of the page
+Quote Post
matino
post 19.05.2011, 13:17:32
Post #6





Grupa: Zarejestrowani
Postów: 175
Pomógł: 30
Dołączył: 9.08.2007

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


Cytat(Endure @ 19.05.2011, 12:07:16 ) *
Dzięki wielkie za szybką i konkretną odpowiedzi.Teraz powiedzcie mi czy dobrze robię: piszę skrypt w php:
  1. <?php
  2. mysqldump --[options] dom > backup-file.sql
  3. ?>

Nie idzie pisze: Parse error: syntax error, unexpected T_DEC in C:\Apache\htdocs\eksport.php on line 2 . Jak ma to przebiegać? Sorry za takie głupie pytania, ale naprawdę jestem początkujący :/

Musisz użyć mysql_query do wywoływania komend MySQL smile.gif
Cytat(Endure @ 19.05.2011, 12:07:16 ) *
Edit:

Tak sobie sprawdzając możliwości MySQL natknąłem się na MySQL Administrator, i nie wiem czy dobrze pojmuje ale tu chyba jest możliwość eksportu i importu baz danych, po lewej stronie znajduję się menu i tam mam Backup, Restore. Klikam Backup i tam mam swoją bazę danych klikam execute Backup np no i chyba ją eksportuje plik się zapisuje z rozszerzeniem .sql zawartość pliku po otwarciu programem Notepad wygląda:

-- MySQL Administrator dump 1.4
--
-- ------------------------------------------------------
-- Server version 5.1.56-community


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;


--
-- Create schema dom
--

CREATE DATABASE IF NOT EXISTS dom;
USE dom;

--
-- Definition of table `testowa`
--

DROP TABLE IF EXISTS `testowa`;
CREATE TABLE `testowa` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`pole` varchar(75) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;

--
-- Dumping data for table `testowa`
--

/*!40000 ALTER TABLE `testowa` DISABLE KEYS */;
INSERT INTO `testowa` (`id`,`pole`) VALUES
(1,'dawid'),
(2,'emil'),
(3,'donia');
/*!40000 ALTER TABLE `testowa` ENABLE KEYS */;




/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;


Tak ma to wyglądać? No i teraz mogę sobie ten plik skopiować na pamięć przenośną i importować W Mysql Administaor za pomocą Restore?

Dokładnie smile.gif
Go to the top of the page
+Quote Post
melkorm
post 19.05.2011, 13:20:03
Post #7





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


Cytat
Musisz użyć mysql_query do wywoływania komend MySQL


A co ma komenda systemowa do mysql_query?

system
exec
i pochodne tych funkcji.


--------------------
Go to the top of the page
+Quote Post
zbig
post 19.05.2011, 18:50:39
Post #8





Grupa: Zarejestrowani
Postów: 144
Pomógł: 30
Dołączył: 5.05.2007
Skąd: Mannheim

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


Aloha ! Mam chwile czasu to sobie popisze troche . A wiec nalezaloby wprowadzic troche logiki do tego przesluchania biggrin.gif.
Wiec jeszcze raz jezeli chodzi o mysqldump. Jest to programik systemowy doloaczony do dystrybucji MySql-a, ktory ja sama nazwa wskazuje wykonuje dumpy (zrzuty) baz danych , lub pojedynczych tabel do dalszej redystrybucji.
Poniewaz jest to program tzw. systemowy, nie mozna uruchomic go bezposrednio z php-a ( mam na mysli jakas funkcje php ktora pracowalaby z wkompilowanym rozszerzeniem obslugujacym mysqldump ), jedyne co ci pozostaje, to uzyc, tak jak powiedzial kolega @melkorm funkcji system, exec etc.

Kod
<?
system("mysqldump -uroot -phaslo dom > backup-file.sql");
?>


No a teraz co sie z tym wiaze.
1. Jezeli robisz to pod Windowsem na swoim localhoscie, musisz upewnic sie czy twoj system zna sciezke do programu mysqldump. Nalezaloby w CMD napisac

Kod
echo $PATH


i sprawdzic, czy ktoras ze wskazanych sciezek systemowych laduje w katalogu mysql/bin, bo tam wlasnie umieszczony jest program mysqldump.
Druga mozliwosc to wpisac w CMD mysqldump i zobaczyc czy system znajduje ten program.
Jezeli nie znajduje to powinienes sciezke do mysql/bin dodac do sciezek w swoim systemie.
Jezeli uzywasz XAMPP powinno to byc C:/XAMPP/mysql/bin. Mozesz rowniez uruchomic mysqldump w php w ten sposob
Kod
<?
system("C:/XAMPP/mysql/bin/mysqldump -uroot -phaslo dom > backup-file.sql");
?>


Nalezaloy sie rowniez zastanowic gdzie zostanie wygenerowany plik backup-file.sql, bo w tym przypadku bedzie to dokladnie katalog, w ktorym zanjduje sie mysqldump.
Czyli zeby miec nad tym jakas kontrole nalezaloby zrobic to tak

Kod
<?
system("C:/XAMPP/mysql/bin/mysqldump -uroot -phaslo dom > C:/jakis_folder/backup-file.sql");
?>


2. Jest to najszybszy sposob na zrobienie zrzutu bazy, ale funkcja "system" , jest na tyle asynchroniczna, ze przy duzej bazie twoj skrypt php zakonczy sie wczesniej niz utworzenie dumpa.
Nie masz mozliwosci z poziomu php ( w szczegolnosci pod winda ) dowiedziec sie czy twoja operacje zakonczyla sie sukcesem, czy trwa , albo czy wogole sie zaczela biggrin.gif.

3. Jezeli taki trik chcesz zastosowac na servie , na ktorym masz jedynie webspace, najprawdopodobniej zakonczy sie to niepowodzeniem, poniewaz nie bedziesz mial mozliwosci uruchamiania z poziomu php programow, ktore wymagaja podania sciezki spoza twojego dokumentu root. ( No chyba, ze administrator ci n to pozwoli ).

Czyli jak widac nie jest to takie trywialne zadanie, dlatego PhpMyAdmin robi to, uzywajac dostepnych funkcji do pracy z baza mysql.
W tej sytuacji powinienes rozpoczac od

Kod
$res = mysql_query ("show tables");


Wylistowac wszystkie table no i nastepnie krok po kroku selectowac kazda jedna, a z razultatu robic potrzebny ci plik tekstowy ( zgodnie z syntaxem mysql ) , ktory bedzie twoim dumpem;

Ufff. Przepraszam za przynudzanie

Pozdrawiam.



--------------------
Flash Flex PHP JAVA RED5 http://www.easyweb24.net
Go to the top of the page
+Quote Post
Endure
post 20.05.2011, 10:27:35
Post #9





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 19.05.2011

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


Dzięki Ci kolego wielkie smile.gif Pozdrawiam
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: 29.06.2025 - 20:58