Txt fichier csv et importer les données dans la table de base de données MySQL

Cet article résume l' CentOS7 utiliser la LOAD DATA <LOCAL> INFILE déclaration MySQL8.0 fichier méthode txt et les données de fichiers csv d'importation et d' erreurs de base de données rencontrées. Parce que les deux la même méthode, nous présentons d' abord l'opération d'importation et d' erreurs fichiers txt, csv joindre une brève description de la commande et de diriger la finale.

Les données brutes

Nom propriétaire espèce sexe naissance décès
Duveteux Harold chat F 1993-02-04  
Les griffes Gwen chat m 1994-03-17  
Buffy Harold chien F 13/05/1989  
croc Benny chien m 27/08/1990  
Bowser Diane chien m 31/08/1979 29/07/1995
Gai Gwen oiseau F 1998-09-11  
Whistler Gwen oiseau   1997-12-09  
Svelte Benny serpent m 1996-04-29  

Préparer le fichier txt

La valeur nulle remplacé par N \, dans chaque rangée des données de délimitation de T, entre les lignes de saut de ligne est \ r \ n. txt puis stocké dans / var / lib / chemin mysql-fichiers sous.

Préparer table de données

mysql> use testdb2;
mysql> create table tbl_pet (
    -> name varchar(10),
    -> owner varchar(10),
    -> species varchar(10),
    -> sex varchar(1),
    -> birth date,
    -> death date)CHARSET = utf8;

importation de données

mysql> LOAD DATA INFILE '/var/lib/mysql-files/pet.txt' INTO TABLE tbl_pet LINES TERMINATED BY '\r\n';

Résultats: Importation

mysql> select * from tbl_pet;                                             
+----------+--------+---------+------+------------+------------+
| name     | owner  | species | sex  | birth      | death      |
+----------+--------+---------+------+------------+------------+
| Fluffy   | Harold | cat     | f    | 1993-02-04 | NULL       |
| Claws    | Gwen   | cat     | m    | 1994-03-17 | NULL       |
| Buffy    | Harold | dog     | f    | 1989-05-13 | NULL       |
| Fang     | Benny  | dog     | m    | 1990-08-27 | NULL       |
| Bowser   | Diane  | dog     | m    | 1979-08-31 | 1995-07-29 |
| Chirpy   | Gwen   | bird    | f    | 1998-09-11 | NULL       |
| Whistler | Gwen   | bird    | NULL | 1997-12-09 | NULL       |
| Slim     | Benny  | snake   | m    | 1996-04-29 | NULL       |
+----------+--------+---------+------+------------+------------+
8 rows in set (0.00 sec)

Vous pouvez continuer à importer les données dans la nouvelle table sera automatiquement ajouté à l'enregistrement original.

 

Erreur Résumé:

# Numéro1 : ERREUR 1148 (42000): La commande utilisée est pas autorisée avec cette version de MySQL

déclaration d'erreur: MySQL> LOAD DATA LOCAL 'de /var/lib/mysql/pet.txt' INFILE INTO TABLE tbl_pet;

Erreur raison: plus d'un mot-clé LOCAL. Lorsque le fichier à l'écriture côté client local, lorsque le serveur sans écriture. Ma base de données MySQL et le fichier txt est dans la même machine virtuelle, donc ne pas ajouter LOCAL.

 

# Numéro2 : ERREUR 1290 (HY000): Le serveur MySQL estcoursexécution avec le --secure-file-PRIV optionsorte qu'il ne peut pas exécuter cette instruction

Erreur Motif: chemin MySQL sécurisé fourni fichier-PRIV correspondant à l'attribut, lorsque le fichier de données sont importées à partir seront donnés les autres chemins.

Solution: Vérifiez fichier sécurisé-PRIV spécifier le chemin et le fichier de données en elle. référence https://blog.csdn.net/FallingU/article/details/75675220

mysql> show variables like '%secure%';
+--------------------------+-----------------------+
| Variable_name            | Value                 |
+--------------------------+-----------------------+
| secure_file_priv         | /var/lib/mysql-files/ |
+--------------------------+-----------------------+

 

# Question3 : ERREUR 1292 (22007): Valeur de date incorrect: '' pourcolonne 'mort' àligne 1

mauvaises raisons: le début d'une copie directe des données originales dans le tableau pour le fichier txt ne gère pas, placez une valeur vide est vide, ne répond pas à la représentation des valeurs NULL dans MySQL, donc une erreur.

Solution: La valeur vide \ N à la place. référence https://dev.mysql.com/doc/refman/8.0/en/loading-tables.html

 

Question4 # : Utilisez LOAD DATA INFILE '/var/lib/mysql-files/pet.txt' INTO TABLEdonnées d'importation échoue encore

Erreur: « pour la colonne » mort « à la ligne 1 valeur de date: » N

Erreur raison: terminée par la valeur par défaut des champs est « \ t », des lignes terminées par défaut est « \ n », alors que de Windows fichiers sur une nouvelle ligne « \ r \ le n », le X-Mac OS est « \ r ».

La solution: ajouter des lignes TERMINATED BY '\ r \ n', comme suit:

mysql> LOAD DATA INFILE '/var/lib/mysql-files/pet.txt' dans la table tbl_pet LINES TERMINATED BY '\ r \ n' ;

 


Importer des données de fichier csv

fichiers de données brutes: Source https://blog.csdn.net/u013378642/article/details/80952849

mysql> use testdb;

mysql> show tables;
+------------------+
| Tables_in_testdb |
+------------------+
| movie_tbl        |
+------------------+

mysql> desc movie_tbl;
+-------------+------------------+------+-----+---------+----------------+
| Field       | Type             | Null | Key | Default | Extra          |
+-------------+------------------+------+-----+---------+----------------+
| id          | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| movie_id    | int(11)          | YES  |     | NULL    |                |
| movie_name  | varchar(40)      | NO   |     | NULL    |                |
| movie_score | float unsigned   | YES  |     | NULL    |                |
| region      | varchar(16)      | YES  |     | NULL    |                |
| year        | year(4)          | YES  |     | NULL    |                |
| movie_type  | varchar(30)      | YES  |     | NULL    |                |
| director    | varchar(80)      | YES  |     | NULL    |                |
| actor       | varchar(60)      | YES  |     | NULL    |                |
+-------------+------------------+------+-----+---------+----------------+

mysql> LOAD DATA INFILE '/var/lib/mysql-files/Movies.csv' INTO TABLE movie_tbl
    -> CHARACTER SET utf8
    -> FIELDS TERMINATED BY ','
    -> LINES TERMINATED BY '\r\n'
    -> IGNORE 1 LINES
    -> (movie_id,movie_name,movie_score,region,year,movie_type,director,actor);

Informations complémentaires:

1. de caractère Utf8: En raison de données chinoises, spécifiez le codage UTF8.

2. FIELDS TERMINATED BY ' ': fichier csv',' données séparées.

3. IGNORE 1 LIGNES: sauter des premières données d'en-tête de ligne dans le fichier d'origine. Si vous n'écrivez pas, l'en-tête sera traité comme l'importation de données. Si vous voulez sauter plusieurs lignes à partir de zéro, vous pouvez modifier l'avant des lignes numériques.

4. Pour importer des données dans le dernier champ, l'ordre sur le terrain et serait conforme à l'ordre du document original.

 

La fin ~

发布了37 篇原创文章 · 获赞 47 · 访问量 10万+

Je suppose que tu aimes

Origine blog.csdn.net/u013378642/article/details/81220809
conseillé
Classement