mysql查询结果的导入导出

    由于工作需要,需要将千万级的数据从一些表中导出,导入到其他表。不想使用navicat。由于不是整表备份,导出方法就不考虑使用 mysqldump了,使用 mysql -e 执行查询,导出的结果是文本记录。因此,导入到其他表时,由于不能使用.sql格式文件,所以不能使用mysql命令或source命令,可以使用 LOAD DATA 或 mysqlimport命令。mysqlimport 客户端提供了 LOAD DATA INFILEQL 语句的一个命令行接口,mysqlimport 的大多数选项直接对应 LOAD DATA INFILE 子句。
    mysqlimport语法格式:

mysqlimport [options] db_name textfile1 [textfile2 ...]

    对于命令行上命名的每个文本文件,mysqlimport从文件名中去掉扩展名,去掉扩展名之后的文件名就是即将导入内容的表名。例如,如果文件名为patient.txt,patient.text,那么这两个文件会被导入到patient表。

导出语句

    执行查询,并将结果导出至/var/lib/mysql-files/table_2015.sql:

mysql -h 192.168.1.1 -p -P3306 -e "select * from database.table where condition " > /var/lib/mysql-files/table_2015.txt
导入语句

    将文件/var/lib/mysql-files/table_2019.sql导入到192.168.1.2服务器database数据库的table_2019表:

# mysqlimport -h 192.168.1.2 -u root -p database /var/lib/mysql-files/table_2019.txt
Enter password: 
databasename.table_2019: Records: 31141035  Deleted: 0  Skipped: 0  Warnings: 0
可能出现的告警

    情况1:

mysqlimport: Error: 1366, Incorrect integer value: 'id' for column 'id' at row 1, when using table: table_2014

    解决方法:检查数据格式,有时候第一行的表头会导致报警,删除表头试试。
    情况2:

mysqlimport: Error: 1290, The MySQL server is running with the --secure-file-priv option so it cannot execute this statement, when using table: table_2014

    解决方法:使用show variables like ‘%secure%’;查询,然后将待导入的文件放在–secure-file-priv设置的文件夹下,本例中为 /var/lib/mysql-files/。

mysql> show variables like '%secure%';
+--------------------------+-----------------------+
| Variable_name            | Value                 |
+--------------------------+-----------------------+
| require_secure_transport | OFF                   |
| secure_auth              | ON                    |
| secure_file_priv         | /var/lib/mysql-files/ |
+--------------------------+-----------------------+
3 rows in set (0.01 sec)
参考文档

[1]Oracle Corporation.mysqlimport — A Data Import Program[EB/OL].https://dev.mysql.com/doc/refman/5.7/en/mysqlimport.html,2021-01-01.
[2]菜鸟教程.MySQL 导入数据[EB/OL].https://www.runoob.com/mysql/mysql-database-import.html,2021-01-01.

猜你喜欢

转载自blog.csdn.net/zsx0728/article/details/114940400