Dopo una ricerca sulle fonti, ad esempio:
link-1:
https://dev.mysql.com/doc/refman/8.0/en/creating-tables.html
sappiamo come visto nell’articolo precedente sul blog attuale: https://6viola.it/metodi-di-accesso-ai-data-base-mysql/
- come si crea un data base, da command line (cmd), phpMyAdmin
- come si crea una o più tabelle, da command line (cmd), phpMyAdmin
- come riempire i campi di una tabella, da command line (cmd), phpMyAdmin
Avevamo promesso, nello scorso articolo degli esempi semplici, il caricamento di una tabella da file txt, e da file csv.
Ecco come fare:
§§§
chiamiamo “esercizio1.txt” il file con il seguente contenuto:
Mario,Concetto,zebra,m,2024-03-02,2024-04-04,’\n’
come si vede i “campi” sono separati da una virgola.
“le linee” sono le righe di una matrice righe x colonne,
dove le colonne sono i campi (fields)
il file esercizio1.txt: riempirà una tabella che chiamiamo pet4
creata nel seguente modo:
cmd-1:
INSERT INTO `pet4` (`name`, `owner`, `species`, `sex`, `birth`, `death`) VALUES (‘Maria’, ‘Concetta’, ‘giraffa’, ‘f’, ‘2024-07-01’, ‘2024-07-31’);
Questo è il modo “classico” e cioé esplicito senza avere usato un trasferimento di una riga (lines) nella tabella pet4
eseguiamo prima di ciò -però- è necessaria “la creazione” della tabella pet4.
La assoceremo al data base “mytestdb” nel modo seguente:
cmd-2:
mysql> CREATE TABLE pet4 (name VARCHAR(20), owner VARCHAR(20),
-> species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);
nella fonte originale era:
CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20), species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);
vedi:
https://dev.mysql.com/doc/refman/8.0/en/creating-tables.html
poi eseguiamo il cmd -qui sopra- che abbiamo chiamato cmd-1 ..
—
infine trasferiamo i contenuti con il file testo (esercizio1.txt)
il link seguente:
link-2:
https://dev.mysql.com/doc/refman/8.0/en/loading-tables.html
suggerisce il seguente codice:
mysql> LOAD DATA LOCAL INFILE ‘/path/pet.txt’ INTO TABLE pet LINES TERMINATED BY ‘\r\n’;
Ma vi sono alcuni errori da correggere:
- Il /path/ deve indicare dove è il file esercizio1.txt
- non si può scrivere:
LOAD DATA LOCAL INFILE ‘C:/Apache24/htdocs/esercizio1.txt‘ INTO TABLE pet4 LINES TERMINATED BY ‘\r\n’;
come sembrerebbe LOGICO dovendo essere i file eseguibili della cartella htdocs!
ma la linea di comando segnala errore perché considera la cartella non adeguata:
infatti scrivendo:
mysql> SHOW VARIABLES LIKE “secure_file_priv”;
si scopre che vi è una cartella riservata:
C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\
Alcune fonti consigliano di eliminare questa limitazione andando ad my.ini
ma non è necessario cito per la cronaca:
dove giustamente consiglia di fermare da “servizi” ..
se volessi cancellare l’indirizzo riservato:
“servizi” > “MySQL80” > tasto destro (arresta) > tasto destro (avvia)
ma NON è necessario!
infatti se scriviamo: (avendo trasferito esercizio1.txt nella cartella Uploads prima di quanto segue):
—
mysql> LOAD DATA LOCAL INFILE ‘C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/esercizio1.txt‘ INTO TABLE pet4;
-> FIELDS TERMINATED BY ‘,’
-> LINES TERMINATED BY ‘\n’;
—
riusciremo a caricare da txt “con 1 solo warning”
se cambiamo in csv “senza warning”:
++
cit on
++
(1)+
il data base è già creato (mytestdb)
(2)+
use mytestdb;
(3)+
creare la tabella pet4:
mysql> CREATE TABLE pet4 (name VARCHAR(20), owner VARCHAR(20),
-> species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);
(4)+
riempire la tabella pet4:
INSERT INTO `pet4` (`name`, `owner`, `species`, `sex`, `birth`, `death`) VALUES (‘Maria’, ‘Concetta’, ‘giraffa’, ‘f’, ‘2024-07-01’, ‘2024-07-31’);
(4)b+
mysql> SELECT * FROM pet4;
(5)+
riempio la tabella pet4 dal file testo nell’indirizzo riservato
mysql> LOAD DATA LOCAL INFILE ‘C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/esercizio1.txt‘ INTO TABLE pet4;
-> FIELDS TERMINATED BY ‘,’
-> LINES TERMINATED BY ‘\n’;
commento:
il contenuto del file esercizio1.txt è il seguente:
Maria,Concetta,antilope,f,2024-03-02,2024-04-04,’\n’
(6)+
riempio la tabella pet4 con csv:
—
mysql> LOAD DATA LOCAL INFILE ‘C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/esercizio2.csv‘ INTO TABLE pet4;
-> FIELDS TERMINATED BY ‘,’
-> LINES TERMINATED BY ‘\n’;
—
commento:
il contenuto del file esercizio2.csv è il seguente:
Maria,Concetta,giraffa,f,2024-03-02,2024-04-04,’\n’
—
segue il copia ed incolla della cmd:
++
cit on
++
Enter password: *********
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.37 MySQL Community Server – GPL
Copyright (c) 2000, 2024, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
mysql> use mytestdb;
Database changed
mysql> CREATE TABLE pet4 (name VARCHAR(20), owner VARCHAR(20), species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);
Query OK, 0 rows affected (0.02 sec)
mysql> INSERT INTO `pet4` (`name`, `owner`, `species`, `sex`, `birth`, `death`) VALUES (‘Maria’, ‘Concetta’, ‘giraffa’, ‘f’, ‘2024-07-01’, ‘2024-07-31’);
Query OK, 1 row affected (0.01 sec)
mysql> SELECT * FROM pet4;
+——-+———-+———+——+————+————+
| name | owner | species | sex | birth | death |
+——-+———-+———+——+————+————+
| Maria | Concetta | giraffa | f | 2024-07-01 | 2024-07-31 |
+——-+———-+———+——+————+————+
1 row in set (0.00 sec)
mysql> LOAD DATA LOCAL INFILE ‘C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/esercizio1.txt’ INTO TABLE pet4;
Query OK, 1 row affected, 6 warnings (0.00 sec)
Records: 1 Deleted: 0 Skipped: 0 Warnings: 6
mysql> SELECT * FROM pet4;
+———————-+———-+———+——+————+————+
| name | owner | species | sex | birth | death |
+———————-+———-+———+——+————+————+
| Maria | Concetta | giraffa | f | 2024-07-01 | 2024-07-31 |
| Maria,Concetta,antil | NULL | NULL | NULL | NULL | NULL |
+———————-+———-+———+——+————+————+
2 rows in set (0.00 sec)
mysql> LOAD DATA LOCAL INFILE ‘C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/esercizio2.csv’ INTO TABLE pet4;
Query OK, 1 row affected, 6 warnings (0.00 sec)
Records: 1 Deleted: 0 Skipped: 0 Warnings: 6
mysql> SELECT * FROM pet4;
+———————-+———-+———+——+————+————+
| name | owner | species | sex | birth | death |
+———————-+———-+———+——+————+————+
| Maria | Concetta | giraffa | f | 2024-07-01 | 2024-07-31 |
| Maria,Concetta,antil | NULL | NULL | NULL | NULL | NULL |
| Maria,Concetta,giraf | NULL | NULL | NULL | NULL | NULL |
+———————-+———-+———+——+————+————+
3 rows in set (0.00 sec)
mysql> LOAD DATA LOCAL INFILE ‘C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/esercizio2.csv’ INTO TABLE pet4
-> FIELDS TERMINATED BY ‘,’
-> LINES TERMINATED BY ‘\n’;
Query OK, 1 row affected (0.01 sec)
Records: 1 Deleted: 0 Skipped: 0 Warnings: 0
mysql> SELECT * FROM pet4;
+———————-+———-+———+——+————+————+
| name | owner | species | sex | birth | death |
+———————-+———-+———+——+————+————+
| Maria | Concetta | giraffa | f | 2024-07-01 | 2024-07-31 |
| Maria,Concetta,antil | NULL | NULL | NULL | NULL | NULL |
| Maria,Concetta,giraf | NULL | NULL | NULL | NULL | NULL |
| Maria | Concetta | giraffa | f | 2024-03-02 | 2024-04-04 |
+———————-+———-+———+——+————+————+
4 rows in set (0.00 sec)
mysql>
++
cit off
++
come si vede dal copia ed incolla della linea di comando qui sopra ..
se non si aggiunge:
-> FIELDS TERMINATED BY ‘,’
-> LINES TERMINATED BY ‘\n’;
alla creazione della tabella pet4
non riesce l’incolonnamento in modo corretto!
Nel caso del testo txt (esercizio1.txt)
riesce anche se il testo è esercizio1.txt
ma da 1 warning
mentre non da nessun warning in formato csv.
—
ALBERO DEI ARTICOLI sul tema INFORMATICA:
- apache+php+mysql (146)
https://6viola.it/apachephpmysql/ - phpMyAdmin (studio) (147)
https://6viola.it/phpmyadmin-studio/ - forms e il software php che elabora i forms (studio) (148)
https://6viola.it/forms-e-il-software-php-che-elabora-i-forms-studio/ - metodi di accesso ai data base mysql (149)
https://6viola.it/metodi-di-accesso-ai-data-base-mysql/ - load dati in tabelle MySQL da file txt / csv (150)
https://6viola.it/load-dati-in-tabelle-mysql-da-file-txt-csv/ - Espansione delle basi di “dati da files in MySQL” e “dati in php versus MySQL” (151)
https://6viola.it/espansione-delle-basi-di-dati-da-files-in-mysql-e-dati-in-php-versus-mysql/
—
ultimo aggiornamento:
10 luglio 2024, ore 1.32