PDA

Bekijk Volledige Versie : mysqldump



johan.smits
07/07/08, 13:41
Ik heb een vraag betreft mysqldump.
Deze word elke dag uitgevoerd en met de all-databases optie.
Echter nu moet ik een tabel uit een database uitlezen. Maar omdat de file 300Mb groot is, word inlezen in een wordpad of iets dergelijks moeilijk.
Zijn er alternatieven? Of kan ik tijdens het terug lezen een enkele database uitfilteren?
Of zijn er tools die dit kunnen parsen?

Triloxigen
07/07/08, 13:51
Ik geloof wel dat het kan, maar een eventuele workaround is de database gewoon in een tijdelijke database laden en dan de tabel eruit exporteren en importeren in de eigenlijke database.

johan.smits
07/07/08, 13:52
En hoe kan ik dan de database uit de mysqldump halen?
Er staan tig databases in. Ik wil enkel 1 database terug lezen.

Pirus
07/07/08, 13:55
Als het 1 bestand is, zou je evt editplus kunnen gebruiken met een CTRL+F

Ramon Fincken
07/07/08, 14:20
of textpad, die werkt echt heerlijk met zulke grote bestanden

johan.smits
07/07/08, 14:31
Ik heb het gevonden, en bedankt voor de reacties.

Zijn er betere tools om een backup van je DB te maken? Waar je makkelijk een tabel of iets dergelijks uit kunt halen?

Ramon Fincken
07/07/08, 14:41
poe, euh ...

mysqldump werkt naar mijn weten erg lekker, maar als je soms een losse tabel / DB nodig hebt, is het niet handig daar een cron voor aan te maken of een standaard commando op je server als shell/bash te saven?

johan.smits
07/07/08, 14:46
Zal de vraag hervormen.
Als je MYSQL tools hebt, hier zit een goede database backup/restrore functie in. Echter als je een mysqldump uitvoert kun je deze niet gebruiken.
Gebruik ik dan het verkeerde command of kan mysqldump geen uitvoer maken die met mysql administrator ingelezen kan worden?

MMaI
07/07/08, 15:33
je genereert gewoon .sql files met mysqldump, deze moet je altijd in kunnen lezen via mysql administrator.
nooit problemen daarmee gehad, dus waarschijnlijk zit je probleem ergens anders

johan.smits
07/07/08, 15:46
kun je de .sql dan met restore backup terug lezen?
Of voer je hem als een SQL query in?

Als ik dit doe krijg ik deze melding: The selected file was generated by mysqldump and cannot be restored by this application.

johan.smits
07/07/08, 16:10
Bij het aanpassen van de header van:

-- MySQL dump 10.11
--
-- Host: localhost Database: ftp
-- ------------------------------------------------------
-- Server version 5.0.32-Debian_7etch1

Naar:

-- MySQL Administrator dump 1.4
--
-- ------------------------------------------------------
-- Server version 5.0.32-Debian_7etch1
Kon ik de .sql file inlezen. En restoren.
Iemand ervaring mee?

Blacky
07/07/08, 16:55
Geen ervaring met het aanpassen van de headers.

Ik doe het altijd zo:
backup
mysqldump -uusername -ppassword databasename >/path/naar/backup.sql
restore:
mysql -uUSERNAME -p DATABASENAME < /path/naar/de/backup.sql

Uitlezen doe ik met bijv. Editpad Lite.
Dat is wel voor complete databases, niet voor losse tabellen.

almar
07/07/08, 17:36
Als je een tabel wilt hebben doe je toch gewoon

--tables Overrides option --databases (-B).

?? Of snap ik de vraag niet :S

gjtje
07/07/08, 18:09
De vraag is: ik wil een backup maken van alle mysql databases waarbij eenvoudig 1 tabel kan worden teruggezet.

Mijn antwoord is dat je het lekker zo moet laten. Anders moet je een script maken dat elke tabel afzonderlijk exporteert.

systemdeveloper
07/07/08, 19:35
Dit is een quick en dirty oplossing die ik recent ook even nodig had om een tabel uit 1 grote dump van 1,5GB te halen.
Je zult zelf wellicht iets moeten tunen om het aan te passen aan je eigen dump formaat en het kan korter, netter etc, maar dit was het snelste verzonnen op dat moment.

Edit// 2 vars uitgeschreven.

<?
define (DB, "jouw_db")
define (TABLE, "jouw_tabel")
$a = fopen("mysqldumpbestand.sql", 'r');
$b = fopen("tabelexport.sql", 'w');
if ($a) {
$l = fgets($a, 40960);
while (substr($l, 0, 34) != '-- Current Database: `'.DB.'`') {
$l = fgets($a, 40960);
}

$l = fgets($a, 40960);
while (substr($l, 0, 43) != '-- Table structure for table `'.TABLE.'`') {
$l = fgets($a, 40960);
}
$l = fgets($a, 40960);
while (substr($l, 0, 18) != '-- Table structure') {
fputs($b, $l);
$l = fgets($a, 40960);
}
fclose($b);
}
?>

Triloxigen
08/07/08, 11:16
Bij het aanpassen van de header van:

-- MySQL dump 10.11
--
-- Host: localhost Database: ftp
-- ------------------------------------------------------
-- Server version 5.0.32-Debian_7etch1Naar:

-- MySQL Administrator dump 1.4
--
-- ------------------------------------------------------
-- Server version 5.0.32-Debian_7etch1Kon ik de .sql file inlezen. En restoren.
Iemand ervaring mee?

Dat zou vreemd zijn.
De tekst achter -- is gewoon commentaar en wordt dus niet verwerkt of iets mee gedaan verder?