{"id":160,"date":"2014-08-21T00:36:21","date_gmt":"2014-08-20T22:36:21","guid":{"rendered":"http:\/\/luismaseda.com\/wp\/?p=160"},"modified":"2014-08-21T20:49:21","modified_gmt":"2014-08-21T18:49:21","slug":"importar-la-tabla-de-torneos-de-access-a-mysql","status":"publish","type":"post","link":"https:\/\/luismaseda.com\/wp\/?p=160","title":{"rendered":"Importar la tabla de torneos de Access a MySQL"},"content":{"rendered":"<p>Una vez realizados los primeros pasos con p\u00e1ginas est\u00e1ticas, llega el turno de ponerse a trabajar con las p\u00e1ginas din\u00e1micas.<\/p>\n<p>En este sentido el primer paso es crear la base de datos y las tablas correspondientes para poder empezar a trabajar, y no es tarea sencilla&#8230; si no se sabe mucho del tema.<\/p>\n<h1>La base de datos &#8211; aem<\/h1>\n<p>El primer paso es crear la base de datos. Lo voy a hacer en local ya que pienso que luego la exportaci\u00f3n al servidor ser\u00e1 m\u00e1s sencillo. Para crear la base de datos utilizo el phpMyAdmin y simplemento creo la base con la opci\u00f3n nueva Base de datos.<\/p>\n<p>Esto no tiene ning\u00fan misterio.<\/p>\n<hr>\n<h1>La tabla de torneos &#8211; tabla_torneos<\/h1>\n<p>Ahora toca el turno de las tablas de la base de datos. He de reconocer que he tenido que pelearme mucho con ello porque lo que parece tan sencillo como exportar una tabla de Access a un formato que admita MySQL, se complica mucho con el tema de los encodings y las fechas.<\/p>\n<p>Lo intent\u00e9 con ficheros csv y xml y no consegu\u00ed nada.<\/p>\n<p>Por no extenderme dir\u00e9 que encontr\u00e9 un art\u00edculo que me hizo ver la luz ya que explicaba este asunto de forma muy clara y did\u00e1ctica:<\/p>\n<p><a title=\"Pasar una BD de Access a MySQL con phpMyAdmin\" href=\"http:\/\/cursoprogramador.wordpress.com\/2012\/10\/02\/pasar-una-bd-de-access-a-mysql-con-phpmyadmin\/\" target=\"_blank\">Pasar una BD de Access a MySQL con phpMyAdmin<\/a><\/p>\n<p>De forma esquem\u00e1tica se\u00f1alar\u00e9 el procedimiento;<\/p>\n<ul>\n<li>phpMyAdmin admite para importar tablas los siguientes formatos: SQL, CSV, ODS y XML.<\/li>\n<li>En esta ocasi\u00f3n vamos a utilizar ODS. \u00bfPor qu\u00e9? El formato ODS va a ser capaz de leer las tildes y \u00f1 sin problema.<\/li>\n<li>ODS es un formato abierto que utiliza Openoffice.org. Para obtener este formato, debemos abrir nuestro fichero de Access, sobre cada una de las tablas, exportarla a formato Excel (que es el m\u00e1s parecido a ODS).<\/li>\n<li>Una vez obtenido el fichero Excel, lo abrimos. Tras abrirlo, utilizaremos Guardar Como para obtener el fichero ODS.<\/li>\n<li>Ya tenemos generado nuestro fichero ODS.<\/li>\n<li>Ahora volvemos a phpMyAdmin y abrimos la opci\u00f3n IMPORTAR.<\/li>\n<li>Pulsamos el bot\u00f3n Examinar y seleccionamos el fichero ODS anteriormente generado. Veremos c\u00f3mo autom\u00e1ticamente cambia el Formato del fichero a Hoja de C\u00e1lculo de Open Document.<\/li>\n<li>Si todo ha ido bien, aparecer\u00e1 un mensaje que nos informar\u00e1 de cu\u00e1ntas estructuras se han creado y cu\u00e1ntas consultas se han ejecutado.<\/li>\n<li>Nos ha creado una tabla cuyo nombre es igual al nombre del fichero ODS (tabla_torneos).<\/li>\n<li>Las tablas se han importado casi correctamente. Los nombres de los campos los ha cogido perfectamente, pero nos faltar\u00edan algunos detalles.<\/li>\n<li>En primer lugar, la llave primaria, seleccionamos el campo cdgo_torneo que ser\u00e1 llave primaria y en la parte de abajo de la p\u00e1gina pulsamos el bot\u00f3n Primaria.<\/li>\n<li>Otro problema que ten\u00edamos era con las fechas. En nuestro caso tenemos dos fechas inicio_torneo y final_torneo, que son fechas, pero no est\u00e1 almacenado en MySQL como Date.<\/li>\n<li>Cambiar simplemente el tipo del campo de Varchar a Date no funciona, ya que en el Varchar est\u00e1n almacenadas las fechas en el formato dd-mm-yyyy y ese formato no lo soporta MySQL.<\/li>\n<li>Debemos crear un campo nuevo para cada fecha, de tipo Date. Tras crearlo, debemos realizar un UPDATE como el siguiente:<style type=\"text\/css\">.scp_box_595{width:595px;}<\/style><div class=\"box_container scp_after\" style=\"width:615px\"><div class=\"scp scp_box scp_box_595 scp_box_magenta  drop-shadow drop-shadow perspective \">UPDATE `tabla_torneos` SET `final_torneo2` = STR_TO_DATE(`final_torneo`, &#8216;%d\/%m\/%Y&#8217;) UPDATE `tabla_torneos` SET `inicio_torneo2` = STR_TO_DATE(`inicio_torneo`, &#8216;%d\/%m\/%Y&#8217;)<\/div><\/div><\/li>\n<li>En los nuevos campos ya tenemos los valores de manera correcta, as\u00ed que podemos borrar los antiguos. Y los campos nuevos renombrarlo para que aparezca con el nombre correcto.<\/li>\n<li>Algo parecido pasa con los campos BOOLEANOS, no los coge correctamente y almacena valores de tipo cadena VERDADERO y FALSO.<\/li>\n<li>As\u00ed, deber\u00edamos crear un campo nuevo, de tipo BOOLEAN, y actualizarlo utilizando la siguiente consulta:<style type=\"text\/css\">.scp_box_510{width:510px;}<\/style><div class=\"box_container scp_after\" style=\"width:530px\"><div class=\"scp scp_box scp_box_510 scp_box_yellow \">UPDATE `usuarios` SET `fumadornuevo`=\u2019true\u2019 where `fumador`=\u2019VERDADERO\u2019<br \/>\nUPDATE `usuarios` SET `fumadornuevo`=\u2019false\u2019 where `fumador`=\u2019FALSO\u2019<\/div><\/div><\/li>\n<li>Con esto tendr\u00edamos todo terminado para una \u00fanica tabla. Si nuestra Base de Datos de Access tiene varias tablas, con llaves externas, tendremos que ir importando todos los ficheros generados para cada tabla.<\/li>\n<\/ul>\n<p>Para completar el trabajo con la tabla he a\u00f1adido una nueva columna llamada auto_torneo, que va despu\u00e9s de estado_torneo. Este campo va a contener la autonom\u00eda del torneo, ya que pienso que puede ser \u00fatil para hacer separaci\u00f3n de torneos por autonom\u00edas.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Una vez realizados los primeros pasos con p\u00e1ginas est\u00e1ticas, llega el turno de ponerse a trabajar con las p\u00e1ginas din\u00e1micas. En este sentido el primer paso es crear la base de datos y las tablas correspondientes para poder empezar a &hellip; <a href=\"https:\/\/luismaseda.com\/wp\/?p=160\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[13,16,17,19,14,18,21,11,20,12,15],"class_list":["post-160","post","type-post","status-publish","format-standard","hentry","category-desarrollo-web","tag-access","tag-base-de-datos","tag-columnas","tag-date","tag-excel","tag-fechas","tag-importar","tag-mysql","tag-ods","tag-phpmyadmin","tag-tablas"],"_links":{"self":[{"href":"https:\/\/luismaseda.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/160","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/luismaseda.com\/wp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/luismaseda.com\/wp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/luismaseda.com\/wp\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/luismaseda.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=160"}],"version-history":[{"count":16,"href":"https:\/\/luismaseda.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/160\/revisions"}],"predecessor-version":[{"id":176,"href":"https:\/\/luismaseda.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/160\/revisions\/176"}],"wp:attachment":[{"href":"https:\/\/luismaseda.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=160"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/luismaseda.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=160"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/luismaseda.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=160"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}