phpMyAdmin
 sql >> Base de données >  >> Database Tools >> phpMyAdmin

Réduire la base de données afin d'exporter tous les produits de Magento

Je vais partager un script php simple, que j'utilise habituellement pour obtenir un vidage de base de données Magento avec un encombrement réduit.

Par exemple vous pouvez créer un fichier avec le nom :tiny-dump.php dans le répertoire racine de Magento et coller le script à l'intérieur de ce fichier. Plus tard, vous pouvez simplement exécuter le script si vous appuyez sur l'URL :http://mydomain.com/tiny- dump.php ... si tout fonctionne bien, vous trouverez un fichier sql avec le vidage de la base de données dans le répertoire var/. Le nom du fichier contiendra {nom DB}-{date actuelle}.sql

Pour votre information, j'ai utilisé quelques idées de cet article :http:/ /www.crucialwebhost.com/kb/article/log-cache-maintenance-script/

Le script fonctionnera si votre hébergeur a installé "mysqldump"

Voici un lien vers le script :https://gist.github.com/4495889

Voici le script :

<?php
$xml = simplexml_load_file('./app/etc/local.xml', NULL, LIBXML_NOCDATA);

$db['host'] = $xml->global->resources->default_setup->connection->host;
$db['name'] = $xml->global->resources->default_setup->connection->dbname;
$db['user'] = $xml->global->resources->default_setup->connection->username;
$db['pass'] = $xml->global->resources->default_setup->connection->password;
$db['pref'] = $xml->global->resources->db->table_prefix;

function export_tiny() {

global $db;

$sqlFileName =  'var/' . $db['name'] . '-' . date('j-m-y-h-i-s') . '.sql';

$tables = array(
    'dataflow_batch_export',
    'dataflow_batch_import',
    'log_customer',
    'log_quote',
    'log_summary',
    'log_summary_type',
    'log_url',
    'log_url_info',
    'log_visitor',
    'log_visitor_info',
    'log_visitor_online',
    'index_event',
    'report_event',
    'report_compared_product_index',
    'report_viewed_product_index',
    'catalog_compare_item',
    'catalogindex_aggregation',
    'catalogindex_aggregation_tag',
    'catalogindex_aggregation_to_tag'
);

$ignoreTables = ' ';
foreach($tables as $table) {
    $ignoreTables .= '--ignore-table=' . $db['name'] . '.' . $db['pref'] . $table . ' ';
}

$dumpSchema = 'mysqldump' . ' ';
$dumpSchema .= '--no-data' . ' ';
$dumpSchema .=  '-u ' . $db['user'] . ' ';
$dumpSchema .= '-p' . $db['pass'] . ' ';
$dumpSchema .= $db['name'] .' > ' . $sqlFileName;

exec($dumpSchema);


$dumpData = 'mysqldump' . ' ';
$dumpData .= $ignoreTables;
$dumpData .=  '-u ' . $db['user'] . ' ';
$dumpData .= '-p' . $db['pass'] . ' ';
$dumpData .= $db['name'] .' >> ' . $sqlFileName;

exec($dumpData);
}

export_tiny();

Problèmes connus :Parfois, le script ne parvient pas à créer le vidage de la base de données si le mot de passe de la base de données contient des caractères spéciaux.

J'espère que cela vous sera utile !