Changeset 93613 in spip-zone for _plugins_/indexer/trunk/inc/indexer.php


Ignore:
Timestamp:
Dec 13, 2015, 11:40:09 AM (5 years ago)
Author:
fil@…
Message:

une option --format=mysql qui permet de faire :
spip indexer:dump --format=mysql | mysql sphinxclone
où sphinxclone est une base de données où l'on veut cloner les contenus du sphinx

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/indexer/trunk/inc/indexer.php

    r93516 r93613  
    340340 * faire un DUMP SQL de notre base sphinx
    341341 * index: nom de l'index (table) a dumper
     342 * format: format de sortie ("sphinx" ou "mysql")
    342343 * dest: fichier destination (null: stdout)
    343344 * bloc : nombre d'enregistrements a rapatrier a chaque tour (maximum 1000)
     
    347348      // indexer_dumpsql(SPHINX_DEFAULT_INDEX, 'tmp/indexer.sql', 1000);
    348349*/
    349 function indexer_dumpsql($index = null, $dest = null, $bloc = 100) {
     350function indexer_dumpsql($index = null, $format = 'sphinx', $dest = null, $bloc = 100) {
    350351        if (is_null($dest)) {
    351352                $dest = 'php://stdout';
     
    397398                $fields = [];
    398399                foreach($all['query']['docs'] as $doc) {
    399                         $fields[] = "\t" . '`' . $doc['Field'] .'` ' . $doc['Type'];
     400                        if ($format == 'sphinx') {
     401                                $fields[] = "\t" . '`' . $doc['Field'] .'` ' . $doc['Type'] ;
     402                        }
     403                        else if ($format == 'mysql') {
     404                                switch ($doc['Type']) {
     405                                        case 'field':
     406                                                break;
     407                                        case 'bigint':
     408                                                $type = 'BIGINT(21) NOT NULL';
     409                                                $fields[] = "\t" . '`' . $doc['Field'] .'` ' . $type;
     410                                                break;
     411                                        case 'timestamp':
     412                                                $type = 'TINYTEXT DEFAULT \'\' NOT NULL';
     413                                                $fields[] = "\t" . '`' . $doc['Field'] .'` ' . $type;
     414                                                break;
     415                                        case 'json':
     416                                                $type = 'TEXT DEFAULT \'\' NOT NULL';
     417                                                $fields[] = "\t" . '`' . $doc['Field'] .'` ' . $type;
     418                                                break;
     419                                        case 'string':
     420                                                $type = 'LONGTEXT DEFAULT \'\' NOT NULL';
     421                                                $fields[] = "\t" . '`' . $doc['Field'] .'` ' . $type;
     422                                                break;
     423                                }
     424                        }
    400425                }
    401426                $comm .= join(",\n", $fields);
    402427                $comm .= "
    403 )
     428);
    404429
    405430
Note: See TracChangeset for help on using the changeset viewer.