MySQL - Spalten nach Typ gruppieren
Ich habe mich heute mit einer etwas vernachlässigten Datenbank beschäftigt. Diese enthielt eine bunte Mischung von Spalten in den Formaten utf8_general_ci sowie latin1_swedish_ci.
Ziel der Aktion war es die Struktur erstmal zu analysieren und dann grundlegend zu überarbeiten.
Zuerst ging es also darum einen Überblick darüber zu erhalten, welche Spalten-Typen wie oft vorhanden waren. Zu diesem Zweck habe ich mir folgendes Script geschrieben:
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 | <?php //Mit Datenbank-Server verbinden if ( ($db_handle = mysql_connect('SERVER', 'BENUTZER_NAME', 'PASSWORD')) === false) { die(mysql_error()); } //Datenbank $database = 'DATENBANK'; //Tabellen auslesen $tsql = "SHOW TABLES FROM ".$database; $tquery = mysql_query($tsql, $db_handle) or die(mysql_error($db_handle)); while ($trow = mysql_fetch_array ($tquery)) { //Aktuelle Tabelle $table = $trow[0]; //Spalten auslesen $csql = "SHOW FULL COLUMNS FROM ".$database.".".$table; $cquery = mysql_query($csql, $db_handle) or die(mysql_error($db_handle)); while ($crow = mysql_fetch_row ($cquery)) { if ( ! empty ($crow[2])) { $column_arr[$crow[2]][] = $table.'.'.$crow[0]; } } } print_r ($column_arr); ?> |
In einem meiner nächsten Artikel, werde ich beschreiben wie man die Spalten bequem in ein anderes Format konvertieren kann
Auf die Datenbank meines Blogs angewendet, sieht die Ausgabe übrigens so aus:
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 58 59 60 61 62 | Array ( [latin1_swedish_ci] => Array ( [0] => wp_comments.comment_author [1] => wp_comments.comment_author_email [2] => wp_comments.comment_author_url [3] => wp_comments.comment_author_IP [4] => wp_comments.comment_content [5] => wp_comments.comment_approved [6] => wp_comments.comment_agent [7] => wp_comments.comment_type [8] => wp_izioseo_anonym_links.link_url [9] => wp_izioseo_anonym_links.link_hash [10] => wp_izioseo_referers.post_url [11] => wp_izioseo_referers.referer_searchengine [12] => wp_izioseo_referers.referer_url [13] => wp_izioseo_referers.referer_request [14] => wp_izioseo_referers_keywords.referer_keyword [15] => wp_links.link_url [16] => wp_links.link_name [17] => wp_links.link_image [18] => wp_links.link_target [19] => wp_links.link_description [20] => wp_links.link_visible [21] => wp_links.link_rel [22] => wp_links.link_notes [23] => wp_links.link_rss [24] => wp_options.option_name [25] => wp_options.option_value [26] => wp_options.autoload [27] => wp_postmeta.meta_key [28] => wp_postmeta.meta_value [29] => wp_posts.post_content [30] => wp_posts.post_title [31] => wp_posts.post_excerpt [32] => wp_posts.post_status [33] => wp_posts.comment_status [34] => wp_posts.ping_status [35] => wp_posts.post_password [36] => wp_posts.post_name [37] => wp_posts.to_ping [38] => wp_posts.pinged [39] => wp_posts.post_content_filtered [40] => wp_posts.guid [41] => wp_posts.post_type [42] => wp_posts.post_mime_type [43] => wp_term_taxonomy.taxonomy [44] => wp_term_taxonomy.description [45] => wp_terms.name [46] => wp_terms.slug [47] => wp_usermeta.meta_key [48] => wp_usermeta.meta_value [49] => wp_users.user_login [50] => wp_users.user_pass [51] => wp_users.user_nicename [52] => wp_users.user_email [53] => wp_users.user_url [54] => wp_users.user_activation_key [55] => wp_users.display_name ) ) |