Importare file csv su mysql

di il
6 risposte

Importare file csv su mysql

Ciao a tutti ho fatto questo programmino per importare file csv su mysql.
<?php

//variabile con il file CSV da importare
ini_set('auto_detect_line_endings', TRUE);
$f = fopen('/home/bombe/Allot/Dati/sample_mx-sg-01_10.40.26.100_10.41.5.215_000037998_20180119101000_UDR_V1.csv', 'r');

while (($data = fgetcsv($f)) != FALSE) {
echo "Errore";
}
fclose($f);
ini_set('auto_detect_line_endings', FALSE);

?>

<?php

try{
$hostname = "localhost";
$dbname = "datiAllot";
$user = "root";
$pass = "ciaociao";
$db = new PDO ("mysql:host=$hostname;dbname=$dbname", $user, $pass);
} catch (PDOException $e) {
echo "Errore: " . $e->getMessage();
die();
}

$sql = 'INSERT INTO UserDataRecords (SubscriberID, SessionKey, SubSessionKey, ChargingApplicationID, StartTime, EndTime, OctetsIn, OctetsOut) VALUES (:SubscriberID, :SessionKey, :SubSessionKey, :ChargingApplicationID, :StartTime, :EndTime, :OctetsIn, :OctetsOut)';
$stmt = $db->prepare($sql);

$SubscriberID = $data[0];
$SessionKey = $data[1];
$SubSessionKey = $data[2];
$ChargingApplicationID = $data[3];
$StartTime = $data[4];
$EndTime = $data[5];
$OctetsIn = $data[6];
$OctetsOut = $data[7];

$stmt->bindParam(' :SubscriberID', $SubscriberID, PDO::PARAM_INT);
$stmt->bindParam(' :SessionKey', $SessionKey, PDO::PARAM_INT);
$stmt->bindParam(' :SubSessionKey', $SubSessionKey, PDO::PARAM_INT);
$stmt->bindParam(' :ChargingApplicationID', $ChargingApplicationID, PDO::PARAM_INT);
$stmt->bindParam(' :StartTime', $StartTime, PDO::PARAM_STR);
$stmt->bindParam(' :EndTime', $EndTime, PDO::PARAM_INT);
$stmt->bindParam(' :OctetsIn', $OctetsIn, PDO::PARAM_INT);
$stmt->bindParam(' :OctetsOut', $OctetsOut, PDO::PARAM_INT);
$stmt->execute();

?>
In fase di compilazione mi esce questo errore:
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined

Qualcuno sa spiegarmi come risolverlo?

6 Risposte

  • Re: Importare file csv su mysql

    Cosa sarebbe la "fase di compilazione"?
  • Re: Importare file csv su mysql

    +m2+ ha scritto:


    Cosa sarebbe la "fase di compilazione"?
    Hai ragione mi sono espresso malissimo.
    Quando da terminale lancio il programma mi esce quella scritta.
    Grazie per la risposta e scusa la poca chiarezza.
  • Re: Importare file csv su mysql

    Jack11093 ha scritto:


    +m2+ ha scritto:


    Cosa sarebbe la "fase di compilazione"?
    Hai ragione mi sono espresso malissimo.
    Quando da terminale lancio il programma mi esce quella scritta.
    Grazie per la risposta e scusa la poca chiarezza.
    se dumpi la tabella (con -d) e carichi da qualche parte un file di esempio domani ci guardo (se non risolvi prima)
  • Re: Importare file csv su mysql

    Ciao ho risolto, solo che devo trattare numeri decisamente grandi ( esempio: 3,88E+11) e con php se non sbaglio non è possibile
  • Re: Importare file csv su mysql

    Ciao, ho lo stesso tuo problema, posso chiederti gentilmente come hai risolto?
    Grazie
  • Re: Importare file csv su mysql

    Ciao,

    intendi questo?
    Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
    Di solito quell'errore spunta quando stai dimenticando di passare qualche parametro nella query.

    Se ad esempio la tabella nel DB ha 8 campi, tu devi eseguire una INSERT in cui indichi tutti e 8 i campi.

    E se per caso usi i bind params, come nell'esempio del post, ti devi ricordare di fare il bind di tutti i parametri definiti nella query (intendo quelli il carattere dei due punti anteposto). Se ne dimentichi anche uno solo oppure ne indichi uno in più per errore, ti salta fuori quel warning.
Devi accedere o registrarti per scrivere nel forum
6 risposte