Backup e recuperação do banco de dados MySQL (1) - use os comandos Select Into Outfile e Load Data Infile

Backup e recuperação do banco de dados MySQL (1) - use os comandos Select Into Outfile e Load Data Infile

1. Use o comando Select Into Outfile para exportar dados

O formato do comando é o seguinte:

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

Nota:
(1) O caminho onde o arquivo especificado pelo parâmetro OUTFILE está localizado deve ter permissão de acesso mysql, caso contrário, um erro será relatado.
(2) Os dados de cada registro são separados por Tab por padrão, ou você pode usar o parâmetro fields terminated para especificar o separador.
(3) Para executar os comandos Select into outfile e Load data infile, você precisa habilitar a configuração do parâmetro secure_file_priv no arquivo de parâmetro my.cnf. As configurações deste parâmetro são as seguintes:
——NULL: o serviço MySQL proíbe as operações de importação e exportação;
—— Nome do diretório: o serviço MySQL só permite que as operações de importação e exportação de arquivos sejam realizadas neste diretório. O diretório deve existir, o serviço MySQL não o criará;
——Empty string (''): o arquivo pode estar em qualquer local.

1. Verifique o valor do 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 o valor do parâmetro secure_file_priv

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

Reinicie o serviço MySQL e verifique o valor do 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. Exemplos

(1) Use selecionar para exportar dados - não especifique um separador

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

Visualize o conteúdo do arquivo stu.txt e use a tecla tab para separar os dados.

[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) Use selecionar para exportar dados - especifique o separador

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

Visualize o conteúdo do arquivo stu.txt e use uma vírgula (,) para separar os dados.

[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

Dois, use o comando Load Data Infile para importar dados

O formato do comando é o seguinte:

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

Descrição:
(1) Especifique o separador correspondente de acordo com o formato do arquivo;
(2) Para executar Carregar dados no lado não servidor, é necessário local. Por exemplo, para logar no mysqld em A da máquina B, você precisa usar local.

1. Use o arquivo stu.txt para importar dados

(1) Limpe os dados da tabela de dados

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

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

(2) Importar dados

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. Use o arquivo stu2.txt para importar dados

(1) Limpe os dados da tabela de dados

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

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

(2) Importar dados

Se você não especificar o separador, ocorrerá o seguinte erro:

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

Especifique o separador, a importação foi bem-sucedida:

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)

Acho que você gosta

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