Imnotdead
16-01-2011, 11:50
Buongiorno a tutti,
scusate in anticipo per la domanda da nabba, però ho sempre lavorato con PHP My Admin e mi trovo ora a dover importare un database (esportato da PHP My Admin) in MySQL Administrator. Guardando in giro ho letto che MySQL Administrator importa SOLO i suoi files sql di backup....mmm....io ho un SQL esportato da PHPMyAdmin, come faccio ad importarlo?
Grazie
deleted_29
16-01-2011, 14:07
premesso che non uso mai myphpadmin...
1) installalo anche dove devi ripristinare
2) verifica se è un mysqldump, nel caso "correggilo" con notepad++ (se non è veramente gigantesco)
Imnotdead
16-01-2011, 14:17
Ciao e grazie per la risposta. Purtroppo non posso installarlo dove c'e' MySQL Admin, è il server di un cliente e non ho gli accessi. PHPMyAdmin lo uso localmente. Problema n.2, come faccio a verificare se è un mysqldump? XD
deleted_29
16-01-2011, 17:08
Originariamente inviato da Imnotdead
Problema n.2, come faccio a verificare se è un mysqldump? XD
... lo apri col notepad (/notepad++) :mem:
---
Ricorda che i dump non sono niente più di
"istruzioni varie"
"sequenzona di insert"
nulla ti vieta di editare a manina le "istruzioni varie" e/o purgare la "sequenzona insert"
Imnotdead
16-01-2011, 19:16
Ok, guardato. Si, è un dump di MySQL, ci sono istruzioni di "create table" e di "insert", quindi credo che il formato vada bene. Il dump è molto lungo perchè il database è molto ampio, quindi vorrei evitare di fare modifiche. In ogni caso, quello che non capisco è perchè non riesco ad importarlo, trattandosi cmq di un file .sql, quindi la sintassi dovrebbe essere la stessa, sia per PHPMyAdmin sia per MySQL Administrator.
Grazie ancora per l'aiuto.
deleted_29
16-01-2011, 19:28
in breve:no
mysqladministrator ha "il suo" formato, non è che siano "tutti uguali".
tra l'altro codifica in utf8 praticamente sempre
---
se vuoi andare sul sicuro "pulisci" a mano (o con un programma-script) il dump ed importalo direttamente da mysql.
normalmente bastano 5 minuti
---
se invece vuoi... prova direttamente a fare il
mysql -uroot -ppassword nome_db <nome_dump.sql
se non c'è troppa "roba strana" dovresti riuscirci
Imnotdead
16-01-2011, 19:40
Ah ok, ecco un tassello che mi mancava e che è essenziale: MySQL Administrator ha il suo formato. Grazie per la spiegazione. Ultima domanda, dato che è la prima volta che lo faccio: quando ho provato ad importare il file, MySQL Admin mi dice "Error in importing" ma non mi dice dove sta l'errore, sai dirmi piu o meno cosa esattamente devo pulire nel dump?
Bow
deleted_29
16-01-2011, 20:20
... tutto :mem:
se non hai esigenze particolari, taglia via tutto che non siano le
"create table" ed "insert"
il resto della croppa sono ottimizzazioni varie, inutili nel caso di db piccoli.
In realtà potresti provare a "trasformarlo", ma non ha un gran senso, se è un lavoro che devi fare una volta sola
questo è un esempio prima della "purga"
-- MySQL Administrator dump 1.4
--
-- ------------------------------------------------------
-- Server version 5.1.40-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 prova
--
CREATE DATABASE IF NOT EXISTS prova;
USE prova;
--
-- Definition of table `libri`
--
DROP TABLE IF EXISTS `libri`;
CREATE TABLE `libri` (
`chiave` int(10) unsigned NOT NULL,
`autore` varchar(45) NOT NULL,
`titolo` varchar(45) NOT NULL,
`casa` varchar(45) NOT NULL,
PRIMARY KEY (`chiave`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `libri`
--
/*!40000 ALTER TABLE `libri` DISABLE KEYS */;
INSERT INTO `libri` (`chiave`,`autore`,`titolo`,`casa`) VALUES
(491193293,'calvino','il sentiero dei nidi di ragno','rizzoli');
/*!40000 ALTER TABLE `libri` ENABLE KEYS */;
--
-- Definition of table `ordini`
--
DROP TABLE IF EXISTS `ordini`;
CREATE TABLE `ordini` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`totale` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1;
--
-- Dumping data for table `ordini`
--
/*!40000 ALTER TABLE `ordini` DISABLE KEYS */;
INSERT INTO `ordini` (`id`,`totale`) VALUES
(1,10),
(2,11),
(3,12),
(4,13),
(5,14),
(6,15),
(7,16),
(8,17),
(9,18);
/*!40000 ALTER TABLE `ordini` ENABLE KEYS */;
--
-- Definition of table `stato_ordini`
--
DROP TABLE IF EXISTS `stato_ordini`;
CREATE TABLE `stato_ordini` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`stato` int(10) unsigned NOT NULL,
`id_ordine` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `Index_2` (`id_ordine`,`stato`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1;
--
-- Dumping data for table `stato_ordini`
--
/*!40000 ALTER TABLE `stato_ordini` DISABLE KEYS */;
INSERT INTO `stato_ordini` (`id`,`stato`,`id_ordine`) VALUES
(1,1,1),
(2,2,1),
(3,1,2),
(4,2,2),
(5,1,3),
(6,2,3),
(7,3,3),
(8,1,4),
(9,2,4);
/*!40000 ALTER TABLE `stato_ordini` 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 */;
----------
e dopo (questo funziona con mysql)
CREATE DATABASE IF NOT EXISTS prova;
USE prova;
DROP TABLE IF EXISTS `libri`;
CREATE TABLE `libri` (
`chiave` int(10) unsigned NOT NULL,
`autore` varchar(45) NOT NULL,
`titolo` varchar(45) NOT NULL,
`casa` varchar(45) NOT NULL,
PRIMARY KEY (`chiave`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `libri` (`chiave`,`autore`,`titolo`,`casa`) VALUES
(491193293,'calvino','il sentiero dei nidi di ragno','rizzoli');
DROP TABLE IF EXISTS `ordini`;
CREATE TABLE `ordini` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`totale` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1;
INSERT INTO `ordini` (`id`,`totale`) VALUES
(1,10),
(2,11),
(3,12),
(4,13),
(5,14),
(6,15),
(7,16),
(8,17),
(9,18);
DROP TABLE IF EXISTS `stato_ordini`;
CREATE TABLE `stato_ordini` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`stato` int(10) unsigned NOT NULL,
`id_ordine` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `Index_2` (`id_ordine`,`stato`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1;
INSERT INTO `stato_ordini` (`id`,`stato`,`id_ordine`) VALUES
(1,1,1),
(2,2,1),
(3,1,2),
(4,2,2),
(5,1,3),
(6,2,3),
(7,3,3),
(8,1,4),
(9,2,4);
-------
Essenzialmente dopo aver "purgato" con cura il file, ti basta lanciarlo come script sql (fai attenzione al drop/create schema!)
ti basta "piparlo" dentro mysql, oppure caricarlo con source a riga di comando (nell'ipotesi che il file dump.sql sia nella directory corrente)
mysql -uroot -ppassword <dump.sql
oppure
mysql -uroot -ppassword
mysql> source dump.sql;
oppure (se hai tolto il nome del db, cosa buona e giusta)
mysql -uroot -ppassword
mysql> create schema nome_db;
mysql> use nome_db;
mysql> source dump.sql
Imnotdead
16-01-2011, 22:11
Ok, in serata o domani provo a pulire il file (dato che il dump di PHPMyAdmin è proprio pieno di commenti vari ecc). Intanto ti ringrazio, casomai torno ad assillarti domani :)