Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    7

    Importare su MySQL dati da file txt complesso

    Buongiorno e grazie per aver aperto questo post

    Io dovrei importare in un database MySQL i dati di un file di testo tipo questo (ma sarà molto, ma molto lungo):

    =======
    Newsgroups: qui c'è il titolo che dovrà essere messo in un campo
    Subject: qui c'è il titolo che dovrà essere messo in un altro campo
    From: qui c'è l'email che deve essere messo in un altro campo
    Date: Mon, 26 Sep 2005 21:56:14 GMT e qui la data su un campo DATA

    e qui testo su più righe che
    può andare a capo diverse volte
    di lunghezza indefinita e variabile


    =======
    Newsgroups: qui c'è il titolo che dovrà essere messo in un campo
    Subject: qui c'è il titolo che dovrà essere messo in un campo
    From: qui c'è l'email che deve essere messo in un altro campo
    Date: Mon, 26 Sep 2005 21:56:14 GMT e qui la data su un campo DATA

    altro testo su più righe che
    può andare a capo diverse volte e
    di lunghezza indefinita e variabile

    =======
    Newsgroups: qui c'è il titolo che dovrà essere messo in un campo
    Subject: qui c'è il titolo che dovrà essere messo in un campo
    From: qui c'è l'email che deve essere messo in un altro campo
    Date: Mon, 26 Sep 2005 21:56:14 GMT e qui la data su un campo DATA

    altro testo su più righe che
    può andare a capo diverse volte e
    di lunghezza indefinita e variabile


    ecc. (perdonate la lunghezza del post...)

    in pratica avrei bisogno avere record di 5 campi (Newsgroups, Subject, From, Date, Testo).

    Se per i primi 4 non è un grande problema (credo!) non so proprio come fare per il campo Testo che può avere lunghezza variabile e all'interno a capo e linee vuote.
    L'unica cosa che posso mettere è quel separatore "=======" (o altro segno) all'inizio di ogni nuovo record.

    C'è un sistema? penso di si... ma io non so proprio trovarlo!
    Se qualcuno mi può data un IMPUT

    Grazie e buona navigazione

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    apri il file con
    $dati=file($nomefile)
    lo scorri con foreach ( $dati as $valori)
    se l'inizio di $valori è = a Newsgroups o Subject o From o Date valorizzi le relative variabili altrimenti accondi i valori tipo $testo.=$valori
    e quando trovi ==== fai le insert e ripulisci le variabili.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    7
    Grazie

    proverò a farlo...

    ciao

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    7
    Emh... non ci sono riuscito

    Un aiuto per imbastire il codice... :master:

    Grazie e buona navigazione

  5. #5
    Utente di HTML.it L'avatar di Teuzzo
    Registrato dal
    Mar 2002
    Messaggi
    969
    1) metti il contenuto del file in una stringa con la funzione fread.
    2) con explode, usando come separatore la stringa '=======' metti la stringa del file in un array.

    Ora avrai un array tipo questo:

    $array[0]="Newsgroups: qui c'è il titolo che dovrà essere messo in un campo
    Subject: qui c'è il titolo che dovrà essere messo in un altro campo
    From: qui c'è l'email che deve essere messo in un altro campo
    Date: Mon, 26 Sep 2005 21:56:14 GMT e qui la data su un campo DATA

    e qui testo su più righe che
    può andare a capo diverse volte
    di lunghezza indefinita e variabile"

    $array[1]="Newsgroups: qui c'è il titolo che dovrà essere messo in un campo
    Subject: qui c'è il titolo che dovrà essere messo in un campo
    From: qui c'è l'email che deve essere messo in un altro campo
    Date: Mon, 26 Sep 2005 21:56:14 GMT e qui la data su un campo DATA

    altro testo su più righe che
    può andare a capo diverse volte e
    di lunghezza indefinita e variabile"

    ...

    Ora, per ogni elemnto dell'array devi estrarre i dati.
    Per farlo puoi usare la funzione substr, usando stripos per sapere la posizione esatta dell'inizio e la fine del testo che ti serve.

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    prova così circa,
    Codice PHP:
    // apertura connessione db
    $dati=file($nomefile) ;
    $val1='';
    $val2='';
    $val3='';
    $val4='';
    $val5='';
    foreach ( 
    $dati as $valori) {
       if (
    substr($valori,1,11)=='Newsgroups:'){
           
    $val1=substr($valori,12);
       } else {
         if (
    substr($valori,1,8)=='Subject:'){
             
    $val2=substr($valori,9);
         } else {
           if (
    substr($valori,1,5)=='From:'){
               
    $val3=substr($valori,6);
           } else {
             if (
    substr($valori,1,5)=='Date:'){
                 
    $val4=substr($valori,6);
             } else {
               if (
    substr($valori,1,10)=='=========='){
                   
    $sql_query  'INSERT INTO tabella (campo1,campo2,campo3,campo4,campo5)';
               
    $sql_query  .= ' VALUES (';
               
    $sql_query.= "'"$val1."','".$val2."','".$val3."','".$val4.'",'".$val5."')";
               //echo $sql_query;
                   $result2 = mysql_query ($sql_query,$conn) or die (" solo x debug ".$sql_query."
    ".mysql_error());    
                   $val1='';
                   $val2='';
                   $val3='';
                   $val4='';
                   $val5='';
               } else {
                   $val5.=$valore;
               }
             }
            }
          }
       }

    in più è meglio fare le opportune considerazioni sui valori da inserire.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    7
    Grazie

    Piano piano ci sto arrivando... almeno alcuni campi li legge e li scrive sul database.
    Ho dovuto però correggere alcune cose... poi posterò il codice.
    Buona navigazione

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 © 2024 vBulletin Solutions, Inc. All rights reserved.