Salve,
se mi loggo all'interno di MariaDB e lancio il seguente comando tutto
funziona:
MariaDB [my_database]> source query.sql;
Di seguito il contenuto di query.sql
USE my_database;
TRUNCATE items_temp;
LOAD DATA LOCAL INFILE '/home/itoffice/data_bridge/items.txt'
INTO TABLE items_temp
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(id_tc_anartic, cod_art, desc_art, ump, umi, coef_ump_umi, gest_maga,
cod_iva, cod_cat_cont, desc_cat_cont, cod_class_pat, art_stato,
disabilitato, ean, peso_netto, peso_lordo, um_peso, lunghezza,
larghezza, altezza, diametro, cod_cat01, desc_cat01,
cod_cat02, desc_cat02, cod_cat03, desc_cat03, cod_cat04, desc_cat04,
cod_cat05, desc_cat05, cod_cat06, desc_cat06, cod_cat07,
desc_cat07, cod_cat08, desc_cat08, cod_cat09, desc_cat09, cod_cat10,
desc_cat10, cod_cat11, desc_cat11, cod_cat12, desc_cat12,
cod_cat13, desc_cat13, cod_cat14, desc_cat14, cod_cat15, desc_cat15,
cod_cat16, desc_cat16, cod_cat17, desc_cat17, cod_cat18,
desc_cat18, cod_cat19, desc_cat19, cod_cat20, desc_cat20, dt_creazione,
dt_last_upd);
Quindi cosa ci vuole a metterlo in uno script php?
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Parametri da inserire per collegarsi al DB
$servername = "localhost";
$username = "my_user";
$password = "my_password";
$database = "my_database";
$options = [MYSQLI_OPT_LOCAL_INFILE => true];
$conn = mysqli_connect($servername, $username, $password, $database);
$conn->options(MYSQLI_OPT_LOCAL_INFILE, true);
if (!$conn) {
die("Connessione al database fallita: " . mysqli_connect_error());
}
// Query SQL
$query = "USE my_database;
TRUNCATE items_temp;
LOAD DATA LOCAL INFILE '/home/itoffice/data_bridge/items.txt'
INTO TABLE items_temp
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(id_tc_anartic, cod_art, desc_art, ump, umi, coef_ump_umi, gest_maga,
cod_iva, cod_cat_cont, desc_cat_cont, cod_class_pat, art_stato,
disabilitato, ean, peso_netto, peso_lordo, um_peso, lunghezza,
larghezza, altezza, diametro, cod_cat01, desc_cat01, cod_cat02,
desc_cat02, cod_cat03, desc_cat03, cod_cat04, desc_cat04, cod_cat05,
desc_cat05, cod_cat06, desc_cat06, cod_cat07, desc_cat07, cod_cat08,
desc_cat08, cod_cat09, desc_cat09, cod_cat10, desc_cat10, cod_cat11,
desc_cat11, cod_cat12, desc_cat12, cod_cat13, desc_cat13, cod_cat14,
desc_cat14, cod_cat15, desc_cat15, cod_cat16, desc_cat16, cod_cat17,
desc_cat17, cod_cat18, desc_cat18, cod_cat19, desc_cat19, cod_cat20,
desc_cat20, dt_creazione, dt_last_upd)";
if (mysqli_multi_query($conn, $query)) {
echo "Query eseguita con successo.";
} else {
echo "Errore nell'esecuzione della query: " . mysqli_error($conn);
}
mysqli_close($conn);
?>
Questo è il risultato:
$ php articoli_test3.php
Query eseguita con successo. (ma di fatto è stato in grado di eseguire
solo TRUNCATE).
Ho modificato anche il file php.ini ma... nisba :\
; Allow accessing, from PHP's perspective, local files with LOAD DATA
statements
;
https://php.net/mysqli.allow_local_infile
mysqli.allow_local_infile = On
Cosa potrei controllare ulteriormente?
^Bart