{"id":3604,"date":"2013-05-21T08:01:02","date_gmt":"2013-05-21T07:01:02","guid":{"rendered":"http:\/\/flaven.fr\/?p=3604"},"modified":"2013-05-21T08:01:02","modified_gmt":"2013-05-21T07:01:02","slug":"mysql-phpmyadmin-console-scinder-des-tables-mysql-trop-importantes-les-bonnes-pratiques-pour-la-migration-dune-base-de-donnees-mysql","status":"publish","type":"post","link":"https:\/\/flaven.fr\/2013\/05\/mysql-phpmyadmin-console-scinder-des-tables-mysql-trop-importantes-les-bonnes-pratiques-pour-la-migration-dune-base-de-donnees-mysql\/","title":{"rendered":"MySQL, PhpMyadmin, Console &#8211; Scinder des tables MySQL trop importantes, les bonnes pratiques pour la migration d&#8217;une base de donn\u00e9es MySQL"},"content":{"rendered":"\n<p><!--  MySQL, PhpMyadmin, Console - Scinder des tables MySQL trop importantes, les bonnes pratiques pour la migration d'une base de donn\u00e9es MySQL  --><br \/>\n\t<!--  MySQL, PhpMyadmin, Console, Mac, console, base de donn\u00e9es, WordPress, .sql, dump, mysqldump, MAMP, OVH, H\u00e9bergement, mutualis\u00e9, commande, UTF-8, EasyPHP, local WAMP, server, PHP 5 VC9, Apache 2 VC9, MySQL 5, PhpMyAdmin, Xdebug, Modules, Windows, XP, Vista, Seven, PC, MAMP, Mac, Apache, MySQL, PHP, backup, Cloud --><\/p>\n<p>\tUn petit amendement \u00e0 l&#8217;article pr\u00e9c\u00e8dent, en effet, les tables d&#8217;une base <code>MySQL<\/code> sont parfois bien plus volumineuses que la limite d&#8217;importation via <code>PhpMyadmin<\/code> offerte par un h\u00e9bergement mutualis\u00e9. Sur OVH, on le rappelle, cette limite est souvent de <code>16 Mo<\/code>, c&#8217;est \u00e0 dire rien du tout.<\/p>\n<p>Vous pouvez donc \u00eatre amen\u00e9(e) \u00e0 scinder (spliter) une BDD notamment des tables en un plus petit nombre de fichiers <code>.sql<\/code> pour la m\u00eame table d&#8217;une base*. On va donc voir comment \u00e0 l&#8217;aide des commandes <code>SQL<\/code> dans la console, on peut scinder une table volumineuse en plus une s\u00e9rie de plus petits fichiers <code>.sql<\/code>.<\/p>\n<p><i>* par analogie macabre et de mauvais go\u00fbt, totalement assum\u00e9, il est toujours plus facile de faire disparaitre un corps en petit morceaux que d&#8217;essayer d&#8217;enterrer le cadavre entier de votre forfait :):) C&#8217;est une vraie technique d&#8217;equarrissage de Base de donn\u00e9es<\/i><\/p>\n<p><b>On vous invite \u00e0 lire le premier article sur la scission des BDD<\/b><\/p>\n<ul>\n<li>MySQL, PhpMyadmin, Console \u2013 Les bonnes pratiques pour la migration d\u2019une base de donn\u00e9es MySQL<br \/><a href=\"http:\/\/social.hecube.net\/2013\/05\/mysql-phpmyadmin-console-les-bonnes-pratiques-pour-la-migration-dune-base-de-donnees-mysql\/\" target=\"_blank\">http:\/\/social.hecube.net\/2013\/05\/mysql-phpmyadmin-console-les-bonnes-pratiques-pour-la-migration-dune-base-de-donnees-mysql\/<\/a><\/li>\n<\/ul>\n<h4>Commande <code>MySQL<\/code> pour la d\u00e9coupe d&#8217;une table<\/h4>\n<p>Pour se faire, on va reprendre notre installation sous WordPress dont la table <code>wp_posts<\/code> est tr\u00e8s importante et enfonce largement la limite des 16 Mo offert par notre espace d&#8217;h\u00e9bergement mutualis\u00e9. <b>On va donc scinder la table <code>wp_posts<\/code> en 4 fichiers distincts qui permettront de reconstruire la table <code>wp_posts<\/code> dans notre nouvel espace d&#8217;h\u00e9bergement mutualis\u00e9.<\/b><\/p>\n<p><b>Bien vider la nouvelle table de votre nouvelle BDD (on dirait une recette de cuisine, c&#8217;est \u00e0 peu pr\u00e8s cela !!!)<\/b><\/p>\n<pre lang=\"sql\">\nTRUNCATE wp_posts;\n<\/pre>\n<p><b>Le plus sage est de la faire carr\u00e9ment dispara\u00eetre. Du pass\u00e9 faisons table rase&#8230; Nous allons la r\u00e9cr\u00e9er ensuite au moment de l&#8217;injection du premier fichier de dump.<\/b><\/p>\n<pre lang=\"sql\">\nDROP TABLE fr_posts;\n<\/pre>\n<h4>Faire une requ\u00eate de s\u00e9lection limit\u00e9e \u00e0 une plage d&#8217;ID<\/h4>\n<p>Une des choses les plus importantes est bien de scinder \u00e0 part \u00e9gale l&#8217;ensemble des enregistrements de votre table sans en omettre aucun. Il existe deux fa\u00e7ons en <code>SQL<\/code> de faire ce type de requ\u00eate. Le mieux est de pouvoir prendre un \u00e9chantillon de <code>rows<\/code> ou d&#8217;enregistrement \u00e0 l&#8217;aide des 2 types de requ\u00eate de s\u00e9lection.<\/p>\n<p><b>La clause <code>BETWEEN<\/code><\/b><br \/>\nVous allez utiliser la clause <code>BETWEEN<\/code> pour s\u00e9lectionner, les 500 premiers enregistrements puis les 500 suivants&#8230; et ainsi de suite.<\/p>\n<pre lang=\"sql\">\n\t# S\u00e9lectionner les 500 premiers enregistrements de la table wp_posts\n\tSELECT * FROM wp_posts WHERE ID BETWEEN 0 AND 500;\n<\/pre>\n<pre lang=\"sql\">\n\t# S\u00e9lectionner les enregistrements 501 \u00e0 1000 de la table wp_posts\n\tSELECT * FROM wp_posts WHERE ID BETWEEN 501 AND 1000;\n\n<\/pre>\n<p><b>La clause <code>LIMIT<\/code><\/b><br \/>\nVous pouvez aussi utiliser la clause <code>LIMIT<\/code> pour s\u00e9lectionner, les 500 premiers enregistrements puis les 500 suivants&#8230; et ainsi de suite.<\/p>\n<pre lang=\"sql\">\n\t\t# S\u00e9lectionner les 500 premiers enregistrements de la table wp_posts\n\t\tSELECT * FROM wp_posts ORDER BY ID ASC LIMIT 0, 500;\n\n\t<\/pre>\n<pre lang=\"sql\">\n\t\t# S\u00e9lectionner les enregistrements 501 \u00e0 1000 de la table wp_posts\n\t\tSELECT * FROM wp_posts ORDER BY ID ASC LIMIT 500, 500;\n\n\t<\/pre>\n<h4><\/h4>\n<p>Une fois vaut requ\u00eate pr\u00eate, vous allez pouvoir &#8220;\u00e9quarrir&#8221; la grosse table, en l&#8217;esp\u00e8ce la table <code>wp_posts<\/code> d&#8217;un site WP. Voil\u00e0 la marche \u00e0 suivre.<\/p>\n<ol>\n<li>Le 1er fichier de dump va emporter les premiers enregistrements de votre table ainsi que la structure.<\/li>\n<li>Le 2\u00e8me fichier de dump va emporter uniquement les donn\u00e9es d&#8217;enregistrement sur la plage d&#8217;ID que vous aurez choisi. On progresse sur un \u00e9chantillon de 2500 enregistrements.<\/li>\n<li>Le 3\u00e8me fichier de dump va emporter uniquement les donn\u00e9es d&#8217;enregistrement sur la plage d&#8217;ID que vous aurez choisi. On progresse sur un \u00e9chantillon de 2500 enregistrements.<\/li>\n<li>Le 4\u00e8me fichier de dump va emporter uniquement les donn\u00e9es d&#8217;enregistrement sur la plage d&#8217;ID que vous aurez choisi. On progresse sur un \u00e9chantillon de 2500 enregistrements.<\/li>\n<\/ol>\n<p><b>La structure et les 2500 premi\u00e8res donn\u00e9es<\/b><\/p>\n<pre lang=\"sql\">\n\t# DUMP structure and datas part 1\n\t\/Applications\/MAMP\/Library\/bin\/mysqldump -c -u root -p  --single-transaction --opt --where=\"ID BETWEEN 0 AND 2500\" h3wdoc wp_posts > \/Users\/nom-de-user\/Documents\/le-chemin-vers-vos-datas-de-migration\/wp_posts_part_1_datas_and_structure.sql\n<\/pre>\n<p><b>Envoi de la premi\u00e8re commande d&#8217;export<\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2013\/05\/using_split_sql_bdd_bis_1.jpg\" alt=\"MySQL, PhpMyadmin, Console - Scinder des tables MySQL trop importantes, les bonnes pratiques pour la migration d'une base de donn\u00e9es MySQL\" width=\"500\" height=\"313\" \/><\/p>\n<p><b>L&#8217;import sous phpMyadmin sur OVH<\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2013\/05\/using_split_sql_bdd_bis_2.jpg\" alt=\"MySQL, PhpMyadmin, Console - Scinder des tables MySQL trop importantes, les bonnes pratiques pour la migration d'une base de donn\u00e9es MySQL\" width=\"500\" height=\"313\" \/><\/p>\n<p><b>Les 2500 donn\u00e9es suivantes plage 2, le <code>--no-create-db --no-create-info<\/code> \u00e9vite de prendre la structure.<\/b><\/p>\n<pre lang=\"sql\">\n\t# DUMP only datas part 2\n\t\/Applications\/MAMP\/Library\/bin\/mysqldump -c -u root -p --no-create-db --no-create-info --single-transaction --opt --where=\"ID BETWEEN 2501 AND 5000\" h3wdoc fr_posts > \/Users\/nom-de-user\/Documents\/le-chemin-vers-vos-datas-de-migration\/wp_posts_part_2_datas.sql\n<\/pre>\n<p><b>Les 2500 donn\u00e9es suivantes plage 3, le <code>--no-create-db --no-create-info<\/code> \u00e9vite de prendre la structure.<\/b><\/p>\n<pre lang=\"sql\">\n\t# DUMP only datas part 3\n\t\/Applications\/MAMP\/Library\/bin\/mysqldump -c -u root -p --no-create-db --no-create-info --single-transaction --opt --where=\"ID BETWEEN 5001 AND 7500\" h3wdoc fr_posts > \/Users\/nom-de-user\/Documents\/le-chemin-vers-vos-datas-de-migration\/wp_posts_part_3_datas.sql\n<\/pre>\n<p><b>Les 2500 donn\u00e9es suivantes plage 4, le <code>--no-create-db --no-create-info<\/code> \u00e9vite de prendre la structure.<\/b><\/p>\n<pre lang=\"sql\">\n\t# DUMP only datas part 4\n\t\/Applications\/MAMP\/Library\/bin\/mysqldump -c -u root -p --no-create-db --no-create-info --single-transaction --opt --where=\"ID BETWEEN 7501 AND 10000\" h3wdoc fr_posts > \/Users\/nom-de-user\/Documents\/le-chemin-vers-vos-datas-de-migration\/wp_posts_part_4_datas.sql\n<\/pre>\n<p><b>Une fois l&#8217;ensembles des commandes d&#8217;export pass\u00e9 en local dans la client MySQL<\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2013\/05\/using_split_sql_bdd_bis_3.jpg\" alt=\"MySQL, PhpMyadmin, Console - Scinder des tables MySQL trop importantes, les bonnes pratiques pour la migration d'une base de donn\u00e9es MySQL\" width=\"500\" height=\"313\" \/><\/p>\n<p><b>Conclusion : On se retrouve donc avec 4 fichiers <code>.sql<\/code> de petites tailles. Il ne reste alors plus qu&#8217;\u00e0 les injecter, dans l&#8217;ordre croissant pour recr\u00e9er votre table volumineuse et l&#8217;affaire sera jou\u00e9e.<\/b>\t<\/p>\n<h2>En savoir plus<\/h2>\n<ul>\n<li>phpMyAdmin, ze outil de management de BDD<br \/><a href=\"http:\/\/www.phpmyadmin.net\/\" target=\"_blank\">http:\/\/www.phpmyadmin.net\/<\/a><\/li>\n<li>OVH, ze meilleur h\u00e9bergement rapport qualit\u00e9-prix<br \/><a href=\"http:\/\/www.ovh.com\/fr\/index.xml\" target=\"_blank\">http:\/\/www.ovh.com\/fr\/index.xml<\/a><\/li>\n<li>Installer facilement PHP-MySQL sur un PC avec EasyPHP<br \/><a href=\"http:\/\/social.hecube.net\/2009\/03\/installer-facilement-php-mysql-sur-un-pc-avec-easyphp\/\" target=\"_blank\">http:\/\/social.hecube.net\/2009\/03\/installer-facilement-php-mysql-sur-un-pc-avec-easyphp\/<\/a><\/li>\n<li>Installer un environnement PHP-MySQL sur MAC<br \/><a href=\"http:\/\/social.hecube.net\/2009\/04\/installer-un-environnement-php-mysql-sur-mac\/\" target=\"_blank\">http:\/\/social.hecube.net\/2009\/04\/installer-un-environnement-php-mysql-sur-mac\/<\/a><\/li>\n<li>MAMP: Mac, Apache, MySQL, PHP sur Mac<br \/><a href=\"http:\/\/www.mamp.info\" target=\"_blank\">http:\/\/www.mamp.info<\/a><\/li>\n<li>EasyPHP | Install a local WAMP server : PHP 5 VC9, Apache 2 VC9, MySQL 5, PhpMyAdmin, Xdebug and Modules on Windows XP\/Vista\/Seven sur PC<br \/><a href=\"http:\/\/www.easyphp.org\/\" target=\"_blank\">http:\/\/www.easyphp.org\/<\/a><\/li>\n<li>Quelques stencils de Graffletopia utiles pour les &#8220;wireframes&#8221; de BDD, <code>MySQL-schema.graffle.gstencil<\/code>, <code>aws_icons_database.gstencil<\/code>, <code>AWS Database.gstencil<\/code><br \/><a href=\"hhttps:\/\/www.graffletopia.com\/\" target=\"_blank\">https:\/\/www.graffletopia.com\/<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Un petit amendement \u00e0 l&#8217;article pr\u00e9c\u00e8dent, en effet, les tables d&#8217;une base MySQL sont parfois bien plus volumineuses que la limite d&#8217;importation via PhpMyadmin offerte&hellip; <\/p>\n<p class=\"text-center\"><a href=\"https:\/\/flaven.fr\/2013\/05\/mysql-phpmyadmin-console-scinder-des-tables-mysql-trop-importantes-les-bonnes-pratiques-pour-la-migration-dune-base-de-donnees-mysql\/\" class=\"more-link\">Continue reading &rarr; <span class=\"screen-reader-text\">MySQL, PhpMyadmin, Console &#8211; Scinder des tables MySQL trop importantes, les bonnes pratiques pour la migration d&#8217;une base de donn\u00e9es MySQL<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":9364,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"bf_ai_meta_description":"Scinder des tables MySQL volumineuses avec MySQL, PhpMyAdmin et Console. Optimisez la migration de bases de donn\u00e9es en utilisant des commandes SQL sp\u00e9cifiques.","bf_ai_og_title":"Scinder des tables MySQL","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[3440,3454,3444,3447,3448,3449,3435,3452],"tags":[],"class_list":["post-3604","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cloud-infrastructure","category-journalism-writing","category-programming-databases","category-technology-trends","category-tools-productivity","category-tutorials-how-to","category-web-development","category-wordpress-cms"],"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p3Vuhl-W8","jetpack_featured_media_url":"https:\/\/flaven.fr\/wp-content\/uploads\/2013\/05\/using_split_sql_bdd_b_bis_bf.jpg","_links":{"self":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/3604","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/comments?post=3604"}],"version-history":[{"count":0,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/3604\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/media\/9364"}],"wp:attachment":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/media?parent=3604"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/categories?post=3604"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/tags?post=3604"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}