+ Rispondi
Risultati da 1 a 10 di 10

Discussione: [SQL] Visualizzare soltanto il testo contenuto tra due tag

  1. #1
    Nuovo della community
    reputazione complessiva: 1 1

    Messaggi
    6

    [SQL] Visualizzare soltanto il testo contenuto tra due tag

    Ciao a tutti, è la prima volta che scrivo qui sul forum e mio malgrado lo faccio per richiedere aiuto (prometto che su altri argomenti ricambierò il favore )


    Spiego brevemente qual'è il mio problema:

    Sto esportando il catalogo prodotti di una piattaforma ecommerce verso un'altra e devo necessariamente esportare la colonna relativa alla descrizione dei prodotti.

    In questa colonna la descrizione del prodotto è racchiusa tra due tag che delimitano l'italiano (<it-IT> e </it-IT>) e altri due che delimitano l'inglese (<en-GB>e </en-GB>).

    Visto che l'altra piattaforma gestisce le diverse lingue in maniera diversa e quindi devo inserire soltanto il testo in italiano, è possibile passare una query sul mio vecchio database in maniera tale da prelevare da ogni cella della colonna soltanto <it-IT>il testo racchiuso tra questi due tag</it-IT> ?

    Penso ci voglia qualcosa del tipo "seleziona la colonna descrizioni e per ogni cella visualizza solo il testo compreso tra <it-IT> e </it-IT>"

    Grazie in anticipo per il preziosissimo aiuto

  2. #2
    Very Important Person L'avatar di chico_
    reputazione complessiva: 45 45

    Messaggi
    1,978
    Blogs
    3
    Visto che è un problema di travaso dati, e non di visualizzazione, potresti (dopo averne fatta opportuna copia) eliminare i tag utilizzando un replace per avere il campo "pulito" da passare al nuovo DB.
    In caso il DBMS fosse MySql:
    UPDATE nometabella SET descrizione= REPLACE(descrizione , '<it-IT>', '')
    ecc. ecc. per gli altri tag.

    Ciauz

    Chico
    Due cose sono infinite: l'universo e la stupidità umana. Sull'universo ho ancora i miei dubbi - Albert Einstein

    www.chicosoft.it
    • Come porre le domande nei forum in modo intelligente
    • Se non vuoi passare per scemo, leggi prima il nostro Regolamento
    • Se un utente ti ha aiutato, usa il pulsante "Commenta intervento" per accrescere la sua reputazione

  3. #3
    Nuovo della community
    reputazione complessiva: 1 1

    Messaggi
    6
    Chico grazie per il consiglio. A questo però ci avevo già pensato.

    Il problema è che io devo estrarre una lingua per volta.
    Se elimino soltanto i tag, invece, mi trovo semplicemente la descrizione duplicata sul nuovo ecommerce.

    In sostanza:
    <it-IT> io vorrei estrarre solo questo testo per ogni cella</it-T><en-GB>tralasciando quello che c'è scritto qui</en-GB>

    Ho cercato qui e lì nei manuali ma non ho trovato niente del genere. Spero vivamente che qualcuno ne sappia qualcosa...

  4. #4
    Very Important Person L'avatar di sspintux
    reputazione complessiva: 28 28

    Messaggi
    942
    Blogs
    5
    Citazione Originariamente Scritto da LSDpill Visualizza Messaggio

    In sostanza:
    <it-IT> io vorrei estrarre solo questo testo per ogni cella</it-T><en-GB>tralasciando quello che c'è scritto qui</en-GB>
    Di quale dbms si tratta ?
    Ciao sspintux
    ------------------------------------------------------------
    Volevamo cambiare il mondo...peccato che abbiamo perso lo scontrino

  5. #5
    Nuovo della community
    reputazione complessiva: 1 1

    Messaggi
    6
    Era un Access che ho convertito in MySQL che faccio girare con XAMPP...
    Eventualmente servisse ovviamente l'access l'ho conservato (ma so che questa non è la sezione adeguata). Preferisco comunque mysql per la velocità (e perchè non so usare access :-P)
    Sono riuscito autonomamente a estrarre tutte le informazioni che mi servivano tranne questa che mi sta facendo impazzire...

  6. #6
    Very Important Person L'avatar di sspintux
    reputazione complessiva: 28 28

    Messaggi
    942
    Blogs
    5
    Citazione Originariamente Scritto da LSDpill Visualizza Messaggio
    Era un Access che ho convertito in MySQL che faccio girare con XAMPP...
    Eventualmente servisse ovviamente l'access l'ho conservato (ma so che questa non è la sezione adeguata). Preferisco comunque mysql per la velocità (e perchè non so usare access :-P)
    Sono riuscito autonomamente a estrarre tutte le informazioni che mi servivano tranne questa che mi sta facendo impazzire...
    purtroppo non lavorando con mysql non posso esserti di molto aiuto;

    comunque la funzione ExtractValue mi sembra interessante per i tuoi scopi

    MySQL :: MySQL 5.1 Reference Manual :: 11.10 XML Functions
    Ciao sspintux
    ------------------------------------------------------------
    Volevamo cambiare il mondo...peccato che abbiamo perso lo scontrino

  7. #7
    Nuovo della community
    reputazione complessiva: 1 1

    Messaggi
    6
    sspintux se mi consigli un DBMS diverso posso provare a convertire il tutto per quel tipo di database ed estrarre da lì...
    I tre quarti delle malattie delle persone intelligenti provengono dalla loro intelligenza.

  8. #8
    Moderatore Globale L'avatar di bottomap
    reputazione complessiva: 41 41

    Messaggi
    2,960
    Ciao,

    Allontanandosi dalla piattaforma dbms (l'estrazione potrebbe essere faticosa in sql), non hai modo di prevedere una funzione, eventualmente una-tantum, di ripulitura in un linguaggio qualsiasi che supporti le espressioni regolari (se si parla di xampp dovresti avere php a disposizione)?
    In quel caso l'estrazione e l'aggiornamento del dato sarebbe un'operazione relativamente indolore (relativamente perché le regexp possono essere ostiche da maneggiare)...

    In buona sostanza, trasferisci il testo completo in una colonna e/o tabella di appoggio, quindi effettui una scorsa del recordset e, record per record, operi l'estrazione e l'update... chiaramente è percorribile per insiemi di dati piccoli, ma anche se i record sono parecchi può essere comunque un'ipotesi valida se comunque si tratta di un'operazione che effettui una sola volta.

    Ciaociao


    Venite a farmi un saluto su http://www.bottomap.com/

    - Come porre domande in modo intelligente
    - Hai mai dato un'occhiata al
    Regolamento del Forum? Se la risposta è no, sarebbe proprio l'ora di farlo...
    - Se un utente ti è stato d'aiuto usa il pulsante Commenta Intervento per aumentare la sua reputazione!

    "La violenza è l'ultimo rifugio degli incapaci" - I.Asimov
    (per chiunque se lo fosse mai chiesto, il nick Bottomap è volutamente sgrammaticato)

  9. #9
    Nuovo della community
    reputazione complessiva: 1 1

    Messaggi
    6
    I record sono parecchi. Si tratta di 16260 prodotti...

    Sto provando a fare la seguente cosa:

    - da sql estraggo tutta la colonna che mi interessa (nella fattispecie la colonna delle descrizioni) per portarla su un editor di testo (penso notepad++) in maniera da avere una descrizione per riga.

    - Sostituisco in massa tutti <it-IT> con il carattere |

    - Sostituisco </it-IT> con | #

    - Sostituisco <en-GB> con |

    - Sostituisco </en-GB> con |\r\n

    - Salvo in .csv

    A questo punto apro il csv con OpenOffice.org Calc e lo imposto come separato da # mentre come separatore di testo metto |
    A questo punto mi dovrebbe aprire un foglio di calcolo con la descrizione italiana sulla colonna A e la descrizione inglese sulla colonna B.

    E da lì poi so come muovermi...

    Vi farò sapere se la mia è solo un'idea folle
    I tre quarti delle malattie delle persone intelligenti provengono dalla loro intelligenza.

  10. #10
    Nuovo della community
    reputazione complessiva: 1 1

    Messaggi
    6
    Non ci crederete ma ha funzionato!!!! Siiiiiii!!!

    Non c'è neanche stato bisogno di mettere \r\n alla fine di ogni riga perchè incollando la colonna avevo già una descrizione ogni riga...
    Una volta aperto con Calc e impostato come separatore di campo # e come separatore di testo | ho visto apparire il tutto su due colonne distinte. Fantastico!

    Sempre con calc ho preparato un foglio con tutte le informazioni necessarie che ho estratto separatamente dal db e salvato in csv. Ho spezzettato il file in files più piccoli da 1000 righe l'uno e sto importando il catalogo via csv sul nuovo ecommerce.
    Non credevo di farcela, ma eccomi qui "vincitore"...

    Grazie a tutti voi per l'aiuto e per la disponibilità. Siete stati davvero preziosissimi!!
    I tre quarti delle malattie delle persone intelligenti provengono dalla loro intelligenza.

+ Rispondi

Tag per Questa Discussione

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi