Copia de seguridad y recuperación de la base de datos MySQL (1): use los comandos Seleccionar en archivo de salida y Cargar archivo de datos

Copia de seguridad y recuperación de la base de datos MySQL (1): use los comandos Seleccionar en archivo de salida y Cargar archivo de datos

1. Utilice el comando Seleccionar en archivo de salida para exportar datos

El formato del comando es el siguiente:

SELECT ... 
INTO OUTFILE 'file_name'
fields terminated by 'char';                                              

Nota:
(1) La ruta donde se encuentra el archivo especificado por el parámetro OUTFILE debe tener permiso de acceso mysql, de lo contrario se informará un error.
(2) Los datos de cada registro están separados por tabulación por defecto, o puede usar el parámetro de campos terminados para especificar el separador.
(3) Para ejecutar los comandos Select into outfile y Load data infile, es necesario habilitar la configuración del parámetro secure_file_priv en el archivo de parámetros my.cnf. La configuración de este parámetro es la siguiente:
——NULL: el servicio MySQL prohibirá las operaciones de importación y exportación;
—— Nombre del directorio: el servicio MySQL solo permite que se realicen operaciones de importación y exportación de archivos en este directorio. El directorio debe existir, el servicio MySQL no lo creará;
—— Cadena vacía (''): el archivo puede estar en cualquier ubicación.

1. Verifique el valor del parámetro secure_file_priv

mysql> show variables like '%secure_file_priv%';
+------------------+-----------------------+
| Variable_name    | Value                 |
+------------------+-----------------------+
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+
1 row in set (0.01 sec)

2. Modifique el valor del parámetro secure_file_priv

[root@Mysql11 ~]# vim /etc/my.cnf  ##编辑MySQL配置文件
#######################################################################
[mysqld]
..........
secure_file_priv=''
..........
#######################################################################

Reinicie el servicio MySQL y verifique el valor del parámetro secure_file_priv

mysql> show variables like '%secure_file_priv%';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| secure_file_priv |       |
+------------------+-------+
1 row in set (0.00 sec)

3. Ejemplos

(1) Use seleccionar para exportar datos, no especifique un separador

mysql> select * from stu into outfile '/tmp/stu.txt';
Query OK, 5 rows affected (0.00 sec)

Vea el contenido del archivo stu.txt y use la tecla de tabulación para separar los datos.

[root@Mysql11 ~]# cat /tmp/stu.txt
1	zhangsan	20	Xinxiang	15578941258
2	tom	20	Xinxiang	13778942222
3	jack	20	Zhengzhou	13675871454
4	john	21	Zhengzhou	13937681111
5	mark	22	Aanyang	13055882233

(2) Utilice seleccionar para exportar datos: especifique el separador

mysql> select * from stu into outfile '/tmp/stu2.txt' fields terminated by ',';
Query OK, 5 rows affected (0.00 sec)

Vea el contenido del archivo stu.txt y use una coma (,) para separar los datos.

[root@Mysql11 ~]# cat /tmp/stu2.txt;
1,zhangsan,20,Xinxiang,15578941258
2,tom,20,Xinxiang,13778942222
3,jack,20,Zhengzhou,13675871454
4,john,21,Zhengzhou,13937681111
5,mark,22,Aanyang,13055882233

Dos, use el comando Load Data Infile para importar datos

El formato del comando es el siguiente:

LOAD DATA [LOCAL] INFILE 'file_name'
INTO TABLE tbl_name
[TERMINATED BY 'string';

Descripción:
(1) Especifique el separador correspondiente según el formato de archivo;
(2) Para ejecutar la carga de datos en el lado que no es del servidor, se requiere local. Por ejemplo, para iniciar sesión en mysqld en A desde la máquina B, necesita usar local.

1. Utilice el archivo stu.txt para importar datos

(1) Borre los datos en la tabla stu

mysql> truncate stu;
Query OK, 0 rows affected (0.04 sec)

mysql> select * from stu;
Empty set (0.00 sec)

(2) Importar datos

mysql> load data infile '/tmp/stu.txt' into table stu;
Query OK, 5 rows affected (0.00 sec)
Records: 5  Deleted: 0  Skipped: 0  Warnings: 0

mysql> select * from stu;
+----+----------+------+-----------+-------------+
| id | name     | age  | address   | phone       |
+----+----------+------+-----------+-------------+
|  1 | zhangsan |   20 | Xinxiang  | 15578941258 |
|  2 | tom      |   20 | Xinxiang  | 13778942222 |
|  3 | jack     |   20 | Zhengzhou | 13675871454 |
|  4 | john     |   21 | Zhengzhou | 13937681111 |
|  5 | mark     |   22 | Aanyang   | 13055882233 |
+----+----------+------+-----------+-------------+
5 rows in set (0.00 sec)

2. Utilice el archivo stu2.txt para importar datos

(1) Borre los datos en la tabla stu

mysql> truncate stu;
Query OK, 0 rows affected (0.02 sec)

mysql> select * from stu;
Empty set (0.00 sec)

(2) Importar datos

Si no especifica el separador, se producirá el siguiente error:

mysql> load data infile '/tmp/stu2.txt' into table stu;
ERROR 1265 (01000): Data truncated for column 'id' at row 1

Especifique el separador, la importación se realiza correctamente:

mysql> load data infile '/tmp/stu2.txt' into table stu fields terminated by ',';
Query OK, 5 rows affected (0.00 sec)
Records: 5  Deleted: 0  Skipped: 0  Warnings: 0

mysql> select * from stu;
+----+----------+------+-----------+-------------+
| id | name     | age  | address   | phone       |
+----+----------+------+-----------+-------------+
|  1 | zhangsan |   20 | Xinxiang  | 15578941258 |
|  2 | tom      |   20 | Xinxiang  | 13778942222 |
|  3 | jack     |   20 | Zhengzhou | 13675871454 |
|  4 | john     |   21 | Zhengzhou | 13937681111 |
|  5 | mark     |   22 | Aanyang   | 13055882233 |
+----+----------+------+-----------+-------------+
5 rows in set (0.00 sec)

Supongo que te gusta

Origin blog.csdn.net/weixin_44377973/article/details/107072574
Recomendado
Clasificación