sql Dump | Export

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

 - Diov  -

- Diov -

10/05/2013 16:02:59
Quote Anchor link
Beste,

Ik zou elke avond met behulp van een cronjob, een query laten uitvoeren die mijn database export/dumpt naar een .sql extensie.

Ik vind op google alleen de manier via een commandline.
Dit is wat ik nu heb:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$sql_dump_db
= "SELECT * INTO OUTFILE 'backups/mytable.sql' FROM leden";
?>


Dit doet hij nu ook per tabel.
Later zou ik dit dan gaan plaatsen op een andere FTP.

Mijn error is de volgende:
Error: Access denied for user '******_db'@'10.1.1.9' (using password: YES)

Zou iemand me kunnen helpen?
Alvast bedankt
Diov
Gewijzigd op 10/05/2013 16:15:40 door - Diov -
 
PHP hulp

PHP hulp

25/04/2024 23:51:46
 
Reshad F

Reshad F

10/05/2013 16:09:26
Quote Anchor link
De error betekent dat je geen toegang tot de database hebt waarschijnlijk door een foutieve combinatie van wachtwoord/gebruikersnaam of rechten
 
 - Diov  -

- Diov -

10/05/2013 16:21:38
Quote Anchor link
De rest van mijn query's lukken allemaal.
Als ik INTO OUTFILE weg doe, werkt het ook.

De rechten van dat bestand zijn 777
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

10/05/2013 16:35:19
Quote Anchor link
Je moet het volledige pad opgeven
 
 - Diov  -

- Diov -

10/05/2013 16:38:50
Quote Anchor link
Heb nu dit:

Error: Access denied for user 'a*****_db'@'10.1.1.9' (using password: YES)
SELECT * INTO OUTFILE 'http://******.site88.net/admin/backups/mytable.sql' FROM leden
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

10/05/2013 16:49:27
Quote Anchor link
Nee, het volledige fysieke pad zoals het bestand op de server staat.
MySQL schrijft de OUTFILE naar het bestandssysteem.

Toevoeging op 10/05/2013 16:51:14:

Overigens krijg met SELECT INTO OUTFILE een csv bestand, en geen sql dump
 
 - Diov  -

- Diov -

10/05/2013 17:22:54
Quote Anchor link
@ Ger, is er een manier om dat pad ergens te zien?

En, hoe zorg ik dan voor een sql dump?
 
Veur Heur

Veur Heur

10/05/2013 17:49:48
Quote Anchor link
Zou het even bij je hoster navragen, veel hosters staan dit namelijk niet toe.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

10/05/2013 18:12:46
Quote Anchor link
Even uit mijn hoofd: $_SERVER['DIRECTORY_ROOT']
Maar dat werkt natuurlijk niet zo met een cronjob, want daar moet je ook altijd het fysieke pad opgeven.

Zelf een script schrijven, even googlen of afkijken bij PMA
 
Willem vp

Willem vp

10/05/2013 19:45:05
Quote Anchor link
Als je het via een cronjob doet, zou ik geen PHP gebruiken, maar mysqldump...
 
 - Diov  -

- Diov -

10/05/2013 23:09:27
Quote Anchor link
@willem,

Dat is met command lines ofz, en ik weet niet hoe dit in zijn werk gaat.
Kan iemand me ff op de goeie weg willen zetten,

Alvast bedankt
Dioc
 
Willem vp

Willem vp

11/05/2013 14:30:47
Quote Anchor link
Uit je eerste post begrijp ik dat je één tabel wilt dumpen. Datzou je kunnen doen door een crontab-entry aan te maken met onderstaand commando. Ik ga uit van een databasegebruiker 'ikke' met wachtwoord 'geheim' die de tabel 'mytable' van database 'mydb' wil dumpen. Uiteraard moet je e.e.a. aanpassen aan je eigen situatie. ;-)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
mysqldump --user=ikke --password=geheim mydb mytable > /pad/naar/dumps/mytable.sql

Het zou kunnen dat cron niet weet waar mysqldump staat; in dat geval moet je ook het pad naar mysqldump opgeven, bijvoorbeeld /usr/bin/mysqldump (maar op sommige systemen is dat pad anders).

Als je alle tabellen van de database tegelijk wilt dumpen dan kan dat door de naam van de tabel weg te laten in het mysqldump-commando.
 
 - Diov  -

- Diov -

15/05/2013 18:29:51
Quote Anchor link
Inderdaad,
De functie system of exec kon ik niet gebruiken.
Ik had dit script op internet gevonden:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php
/* backup the db OR just a table */
function backup_tables($host,$user,$pass,$name,$tables = '*')
{

    
    $link = mysql_connect($host,$user,$pass);
    mysql_select_db($name,$link);
    
    //get all of the tables
    if($tables == '*')
    {

        $tables = array();
        $result = mysql_query('SHOW TABLES');
        while($row = mysql_fetch_row($result))
        {

            $tables[] = $row[0];
        }
    }

    else
    {
        $tables = is_array($tables) ? $tables : explode(',',$tables);
    }

    
    //cycle through
    foreach($tables as $table)
    {

        $result = mysql_query('SELECT * FROM '.$table);
        $num_fields = mysql_num_fields($result);
        
        $return.= 'DROP TABLE '.$table.';';
        $row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
        $return.= "\n\n".$row2[1].";\n\n";
        
        for ($i = 0; $i < $num_fields; $i++)
        {

            while($row = mysql_fetch_row($result))
            {

                $return.= 'INSERT INTO '.$table.' VALUES(';
                for($j=0; $j<$num_fields; $j++)
                {

                    $row[$j] = addslashes($row[$j]);
                    $row[$j] = ereg_replace("\n","\\n",$row[$j]);
                    if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
                    if ($j<($num_fields-1)) { $return.= ','; }
                }

                $return.= ");\n";
            }
        }

        $return.="\n\n\n";
    }

    
    //save file
    $handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');
    fwrite($handle,$return);
    fclose($handle);
}

?>


Zo gebruik je de functie:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
backup_tables('host','username','pass','database');
?>
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.