Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 32
  1. #1
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875

    Importare i dati di una tabella in una tabella un po' diversa

    Dovrei importare dei dati che ho in una tabella, in un'altra un po' diversa.

    Si tratta di recensioni dei miei clienti, il problema e' che nella vecchia tabella (quella popolata di record) ho il nome dell'hotel e non l'id, mentre nella nuova e' previsto l'id_htl.

    Ecco come sono fatti i database:
    NUOVA STRUTTURA
    codice:
    CREATE TABLE IF NOT EXISTS `tbl_feedback` (
      `id` int(10) NOT NULL AUTO_INCREMENT,
      `id_htl` int(11) unsigned NOT NULL DEFAULT '0',
      `id_pta` int(10) NOT NULL DEFAULT '0',
      `nome` char(30) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
      `cognome` char(35) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
      `tipo_vacanza` tinyint(1) NOT NULL DEFAULT '0',
      `soddisfatto` tinyint(1) NOT NULL DEFAULT '0',
      `gia_cliente_nostro` tinyint(1) NOT NULL DEFAULT '0',
      `prossima_vacanza` tinyint(2) NOT NULL,
      `voto_hotel` float NOT NULL DEFAULT '0',
      `recensione` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
      `data_commento` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
      `moderato` tinyint(1) NOT NULL DEFAULT '0',
      `ip` char(25) DEFAULT NULL,
      PRIMARY KEY (`id`),
      UNIQUE KEY `id_htl_2` (`id_htl`,`id_pta`),
      KEY `id_pta` (`id_pta`),
      KEY `moderato` (`moderato`),
      KEY `id_htl` (`id_htl`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
    STRUTTURA VECCHIA E POPOLATA
    codice:
    CREATE TABLE IF NOT EXISTS `commenti` (
      `id` int(10) NOT NULL AUTO_INCREMENT,
      `nome` varchar(30) NOT NULL DEFAULT '',
      `cognome` varchar(35) NOT NULL DEFAULT '',
      `hotel` varchar(55) NOT NULL DEFAULT '',
      `tipo_vacanza` int(1) NOT NULL,
      `soddisfatto` char(2) NOT NULL DEFAULT '00',
      `gia_cliente_nostro` char(2) NOT NULL DEFAULT '',
      `scelta_hotel` varchar(25) NOT NULL DEFAULT '',
      `prossima_vacanza` char(2) NOT NULL DEFAULT '',
      `voto_hotel` float NOT NULL DEFAULT '0',
      `recensione` text NOT NULL,
      `data_commento` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=927 ;
    i dati nella tabella vecchia stanno in questo modo:

    codice:
    INSERT INTO `commenti` (`id`, `nome`, `cognome`, `hotel`, `tipo_vacanza`, `soddisfatto`, `gia_cliente_nostro`, `prossima_vacanza`, `voto_hotel`, `recensione`, `data_commento`) VALUES
    (4, 'PINCO', 'PALLINO', 'HOTEL AGIP', 0, 'Si', 'No', '', 0, 'hotel molto soddisfatto dell'hotel, ottima pulizia', '2009-07-20 18:58:49'),
    a questo punto, ho cambiato il campo "hotel" dove c'e' HOTEL AGIP in 1, visto che l'id di questo hotel è 1, ma non basta per fare l'import da phpmyadmin, mi mette solo la prima riga oppure mi da questo errore:

    #1062 - Duplicate entry '1-0' for key 'id_htl_2'

    Come posso risolvere? mettere 1000 commenti a mano sarebbe una sfacchinata
    non capisco questo id_htl_2 da dove esce...

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Qui sbagli gli apici, correggi cosi

    (4, 'PINCO', 'PALLINO', 'HOTEL AGIP', 0, 'Si', 'No', '', 0, " hotel molto soddisfatto dell'hotel, ottima pulizia" , '2009-07-20 18:58:49')

  3. #3
    codice:
    ...
    UNIQUE KEY `id_htl_2` (`id_htl`,`id_pta`),
    ...
    Hai violato la condizione di unicità della chiave costituita dalle coppie id_htl eid_pta.

    Originariamente inviato da allin81
    ...non capisco questo id_htl_2 da dove esce...
    ...eppure sei stato tu a creare la tabella!
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  4. #4
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    Originariamente inviato da satifal
    codice:
    ...
    UNIQUE KEY `id_htl_2` (`id_htl`,`id_pta`),
    ...
    Hai violato la condizione di unicità della chiave costituita dalle coppie id_htl eid_pta.



    ...eppure sei stato tu a creare la tabella!
    no la tabella l'ha creato un mio programmatore, infatti ho tolto quell'id_htl_2 ed ora mi funziona, pero' mi sa che dovrebbe esserci visto che l'ha messa...

    Come posso fare in modo che questa condizione ci sia ma che l'import vada a buon fine?

  5. #5
    Originariamente inviato da allin81
    Come posso fare in modo che questa condizione ci sia ma che l'import vada a buon fine?
    Basta semplicemente che i dati rispettino il vincolo di unicità! Non c'è tanto altro da fare.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  6. #6
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    Originariamente inviato da satifal
    Basta semplicemente che i dati rispettino il vincolo di unicità! Non c'è tanto altro da fare.
    si ma non capisco a che serve quel vincolo di unicità, nella tabella mia non c'e', l'ha messa il programmatore nella sua..

  7. #7
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    eh e' dura .....
    molto dura.

    Satifal ti ha già fornito la soluzione quando esporti i dati devi farti 1 script che li converta mantendo i "vincoli di unicità" ..... ossia non devono esserci dati replicati, ossia non devono assolutamente esistere due id uguali e se tenti di inserire un record con id 1 e quell'id esiste gia' ... son dolori ... e da errore.

    Dovresti inserire i dati rispettando gli auto increment e quindi delegando la generazione dell'id al mysql, e aggiungere una colonna dove tenere traccia del vecchio id per ragione appunto di storico.

  8. #8
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    ma infatti gli id sono autoincrement, nessuno è duplicato...

  9. #9
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    si hai ragione scusa svista mia

    codice:
    #1062 - Duplicate entry '1-0' for key 'id_htl_2'
    E' una colonna "unique" e quindi devi farti dire :
    1- perche' esiste
    2- che formato di codici usa
    3- a che serve
    e quindi in fase di esportazione agire di conseguenza

  10. #10
    Originariamente inviato da satifal
    codice:
    ...
    UNIQUE KEY `id_htl_2` (`id_htl`,`id_pta`),
    ...
    Hai violato la condizione di unicità della chiave costituita dalle coppie id_htl eid_pta
    Ok ci riprovo! Stai violando l'unicità della chiave formata dalla COPPIA di colonne id_htl e id_pta le quali singolarmente NON sono autoincrement.

    Se tenti di inserire ad esempio:

    id - id_htl - id_pta - ...
    1 - 1 - 1 - ...
    2 - 1 - 1 - ...

    in fase di inserimento del secondo record ti darà errore in quanto la COPPIA di valori 1 - 1 relativa alle colonne id_htl e id_pta è già presente.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.