sql >> Base de Datos >  >> Database Tools >> phpMyAdmin

Resultado del procedimiento de exportación de PhpMyAdmin

Esta no es una solución adecuada, sino más bien una alternativa:

Puede copiar el HTML externo de cualquier botón de exportación de un resultado de consulta regular usando el inspector de elementos de su navegador y pegarlo en el resultado de un comando CALL para exportar los resultados. Algunas modificaciones son necesarias.

Debe copiar la etiqueta de anclaje con href="tbl_export.php" desde un botón de exportación de consulta regular. Observe que el <a> la etiqueta tiene un data-post atributo, que contiene datos de formulario codificados en URL. Entre todos los campos del data-post cadena, estamos interesados ​​en sql_query y table los campos. Es decir, queremos reemplazar el sql_query y afirmar que la table el campo no está en blanco.

Al ejecutar un comando CALL en PhpMyAdmin, debe abrir el inspector de elementos en el conjunto de campos en la parte inferior de la página, pegar el HTML externo copiado como el último elemento secundario del conjunto de campos y editar sql_query valor para que coincida con el valor de sql_query en el vecino Crear vista botón.

El siguiente script de Greasemonkey hace todo lo anterior automáticamente y crea un botón de "Exportación forzada" cuando es posible:

// ==UserScript==
// @name      Force export button in phpMyAdmin
// @namespace https://<your phpmyadmin host>/*
// @include   https://<your phpmyadmin host>/*
// @version   1
// @grant     none
// ==/UserScript==

setInterval(function() {
  // See https://stackoverflow.com/a/35385518/5254685
  /**
   * @param {String} HTML representing a single element
   * @return {Element}
   */
  function htmlToElement(html) {
      var template = document.createElement('template');
      html = html.trim(); // Never return a text node of whitespace as the result
      template.innerHTML = html;
      return template.content.firstChild;
  }

  let create_view_a = document.querySelector('span>a.create_view');
 
  if (create_view_a == null) {
    return;
  }
  
  if (document.querySelector('a[href="tbl_export.php"]') != null) {
    return;
  }

  let data_post = create_view_a.getAttribute('data-post');

  let fieldset = create_view_a.parentElement.parentElement;
  
  let form_data = Object.fromEntries(
    data_post.split('&').map(v => v.split('=', 2))
    );


  if (form_data['table']) {
    let forced_export_btn = htmlToElement(`
      <a href="tbl_export.php" data-post="${data_post}">
        <span class="nowrap"><img src="themes/dot.gif" title="Export" alt="Export" class="icon ic_b_tblexport">&nbsp;Forced Export</span>
      </a>
    `);
    fieldset.appendChild(forced_export_btn);
  }
}, 2500);