En este artículo se resume la CentOS7 utilizar la CARGA DE DATOS <local> INFILE declaración a MySQL8.0 archivo txt método y los datos del archivo CSV de importación y errores de base de datos encontrado. Debido a que tanto el mismo método, primero introducimos la operación de importación y error txt, csv adjuntar una breve descripción del comando y dirigir la final.
Los datos en bruto
nombre | propietario | especies | sexo | nacimiento | muerte |
---|---|---|---|---|---|
Mullido | Harold | gato | F | 02/04/1993 | |
Garras | Gwen | gato | metro | 1994-03-17 | |
Buffy | Harold | perro | F | 05/13/1989 | |
colmillo | Benny | perro | metro | 08/27/1990 | |
Bowser | Diane | perro | metro | 08/31/1979 | 07/29/1995 |
Alegre | Gwen | pájaro | F | 09/11/1998 | |
Whistler | Gwen | pájaro | 1997-12-09 | ||
Delgado | Benny | serpiente | metro | 04/29/1996 |
Preparar el archivo txt
El valor nulo sustituye por N \, dentro de cada fila de datos delimitadores \ T, entre las líneas de nueva línea es \ r \ n. archivo txt luego se guardan en / var / lib / mysql-ruta archivos bajo.
Preparar tabla de datos
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;
La importación de datos
mysql> LOAD DATA INFILE '/var/lib/mysql-files/pet.txt' INTO TABLE tbl_pet LINES TERMINATED BY '\r\n';
Resultados de importación:
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)
Puede seguir para importar los datos en la nueva tabla será automáticamente añadida a la grabación original.
Resumen de error:
# Número1 : ERROR 1148 (42000): El comando que se utiliza no está permitido con esta versión de MySQL
declaración de error: MySQL> al cargar los datos del LOCAL '/var/lib/mysql/pet.txt' INFILE la tbl_pet INTO TABLE;
razón de error: más de una palabra clave LOCAL. Cuando el archivo en el lado del cliente de escritura local, cuando el servidor sin escribir. Mi base de datos MySQL y txt archivo está en la misma máquina virtual, por lo que no añada LOCAL.
# Número2 : ERROR 1290 (HY000): El servidor de MySQL está usando el --secure-archivo-priv opción para que no pueda ejecutar esta declaración
Error Motivo: ruta de MySQL siempre seguro-archivo-priv correspondiente al atributo, cuando el archivo de datos ha sido importada desde los otros caminos se le dará.
Solución: Compruebe segura-archivo-priv especificar la ruta y el archivo de datos en él. referencia https://blog.csdn.net/FallingU/article/details/75675220
mysql> show variables like '%secure%';
+--------------------------+-----------------------+
| Variable_name | Value |
+--------------------------+-----------------------+
| secure_file_priv | /var/lib/mysql-files/ |
+--------------------------+-----------------------+
# Número3 : ERROR 1292 (22007): valor de fecha incorrecta: '' para la columna de la muerte en la fila 1
razones equivocadas: el comienzo de una copia directa de los datos originales en la tabla a un archivo txt no maneja, colocan un valor vacío está vacío, no cumplen con la representación de los valores nulos de MySQL, por lo que un error.
Solución: El valor vacío \ N en vez. referencia https://dev.mysql.com/doc/refman/8.0/en/loading-tables.html
Número4 # : Uso CARGA DE DATOS INFILE '/var/lib/mysql-files/pet.txt' INTO TABLEdatos de importación sigue sin
Error: "para la columna de la muerte en la fila 1 valor de fecha: 'N
razón de error: terminado por el valor por defecto de los campos es '\ t', líneas que terminan por defecto es '\ n', mientras que de Windows los archivos en una nueva línea ' \ r \ el n- ', el X-Mac OS es '\ r'.
La solución: LÍNEAS add TERMINATED BY '\ r \ n', como sigue:
mysql> CARGA DE DATOS INFILE '/var/lib/mysql-files/pet.txt' en tbl_pet TABLA LÍNEAS terminados en '\ r \ n' ;
los datos del archivo de importación CSV
Ficheros de Datos de: fuente 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);
Información adicional:
1. CARACTERES UTF8: Debido a los datos chinos, especifique la codificación UTF-8.
2. Campos terminados en ' ': archivo csv',' separados de datos.
3. IGNORE 1 LÍNEAS: saltarse la primera fila de datos de cabecera en el archivo original. Si no se escribe, la cabecera será tratado como la importación de datos. Si desea omitir varias líneas a partir de cero, puede cambiar la parte delantera de las líneas digitales.
4. Para importar datos en el último campo, el orden de campo y ser coherente en el orden del documento original.
El ~ Fin