Bonjour à tous,
Je vous sollicite car je reconstitue actuellement une base de données par des imports successifs de fichiers CSV. Ceux-ci comportent plus de 500 000 lignes pour environ 180Mo chacun.
Je les importe par la commande SQL suivante :
Je n'ai pas eu trop de soucis jusque là mais sur certaines tables (les plus grosses), je rame pour réussir à les importer en entier : sur le dernier, j'ai tronçonné les fichiers en 2 parties de 200 000 lignes et une dernière partie de 150 000 lignes. Je lance la commande pour le premier fichier et j'obtiens 200 000 lignes dans la table, j'insère le second et je totalise 400 000 fiches mais sur le troisième fichier, j'abouti à 524 708 lignes, puis 532 456, 543 624, etc. et un nombre différent à chaque tentative mais jamais les 550 000 que je devrais normalement obtenir.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 LOAD DATA INFILE "D:/TaxRef/TAXREFv110 UTF8 (A).txt" INTO TABLE maj_taxref.taxref_11 FIELDS TERMINATED BY '\t' OPTIONALLY ENCLOSED BY '' LINES TERMINATED BY '\n' (REGNE,PHYLUM,CLASSE,ORDRE,FAMILLE,SOUS_FAMILLE,TRIBU,GROUP1_INPN,GROUP2_INPN,CD_NOM,@CD_TAXSUP,@CD_SUP,CD_REF,RANG,LB_NOM,LB_AUTEUR,NOM_COMPLET,NOM_COMPLET_HTML,NOM_VALIDE,NOM_VERN,NOM_VERN_ENG,@HABITAT,FR,GF,MAR,GUA,SM,SB,SPM,MAY,EPA,REU,SA,TA,TAAF,PF,NC,WF,CLI,URL) SET CD_TAXSUP = IF(@CD_TAXSUP = '', NULL, @CD_TAXSUP), CD_SUP = IF(@CD_SUP = '', NULL, @CD_SUP), HABITAT = IF(@HABITAT = '', NULL, @HABITAT);
Si je commence par le dernier fichier, je parviens bien à insérer mes 150 000 lignes donc le problème n'est pas dans le fichier lui-même ou son contenu.
Sur la table précédente qui m'a posée le même soucis, j'ai envoyé chaque segment dans un ordre différent et je n'ai fini, je ne sais comment, à insérer toutes mes lignes sans exception. Sur cette table, malgré de multiples essais, pas moyen d'y parvenir.
Est-ce que quelqu'un aurait la moindre idée d'où peut venir le problème ? Problème de taille (actuellement toute la base de données pèse 1.3Go) ? limite de performances de l'ordinateur (les requêtes prennent entre 6 et 7 secondes à s'exécuter) ?
Je tourne sous Windows 10 avec un serveur UwAmp portable 3.1.0, PHP 7.0.3, MySQL 5.7.11 et PHPMyAdmin 4.5.4.1
La structure de la table :
Merci de votre aide !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 CREATE TABLE `taxref_11` ( `REGNE` varchar(255), `PHYLUM` varchar(255), `CLASSE` varchar(255), `ORDRE` varchar(255), `FAMILLE` varchar(255), `SOUS_FAMILLE` varchar(255), `TRIBU` varchar(255), `GROUP1_INPN` varchar(255), `GROUP2_INPN` varchar(255), `CD_NOM` int(7), `CD_TAXSUP` int(7) DEFAULT NULL, `CD_SUP` int(7) DEFAULT NULL, `CD_REF` int(7), `RANG` varchar(5), `LB_NOM` varchar(255), `LB_AUTEUR` varchar(255), `NOM_COMPLET` varchar(255), `NOM_COMPLET_HTML` varchar(255), `NOM_VALIDE` varchar(255), `NOM_VERN` varchar(700), `NOM_VERN_ENG` varchar(255), `HABITAT` tinyint(1) DEFAULT NULL, `FR` char(1), `GF` char(1), `MAR` char(1), `GUA` char(1), `SM` char(1), `SB` char(1), `SPM` char(1), `MAY` char(1), `EPA` char(1), `REU` char(1), `SA` char(1), `TA` char(1), `TAAF` char(1), `PF` char(1), `NC` char(1), `WF` char(1), `CLI` char(1), `URL` varchar(255) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Partager