DataGrip导入导出数据+表结构

时间:2024-03-13 11:50:00

背景描述

mysql客户端大家一般都用navicat,navicat的导入导出数据功能很方便,选中需要导出的表Ctrl+C,然后到需要导出的库Ctrl+V就可以了。最近我在研究datagrip的使用,用过idea的都知道,是jetbrains全家桶里的一份子,代码提示功能很强大,但导入导出有点复杂,这篇博客主要就是记录一下具体的操作流程。

版本

DataGrip:2020.1
Mysql:8.0.18
说明:mysql8和mysql5变化有点大,导入导出的时候,两个版本的情况不同,这里是按mysql8来解决各种问题。

具体操作

导出

选中需要导出的库或者表,选择库即导出库下所有的表,选中某个表即导出单张表。右键选中Export with 'mysqldump'
DataGrip导入导出数据+表结构
DataGrip导入导出数据+表结构
参数说明:

  1. --column-statistics=0

    导出时抛出 “Unknown table ‘COLUMN_STATISTICS’ in information_schema (1109)” 错误,这是因为当前执行导出操作的 MySQL 版本是 8.x+ ,但需要被导出的数据库是由之前版本创建的。在 MySQL 8.x 之前的版本中,information_schema 数据库中没有 COLUMN_STATISTICS 数据表,添加 --column-statistics=0 即可忽略这个表。
    摘自:https://www.jianshu.com/p/0a3d13cae438

  2. --lock-all-tables -x

    导出时抛出 “does not exist when using LOCK TABLES” 错误,其实是数据库当前处于连接被使用状态,所以 MySQL 认为直接导出会出现数据不一致,添加 --lock-all-tables -x 即可。该操作实际上就是在导出时锁定所有表。
    摘自:https://www.jianshu.com/p/0a3d13cae438

  3. --set-gtid-purged=OFF

    导入时,提示“@@GLOBAL.GTID_PURGED cannot be changed: the added gtid set must not overlap with @@GLOBAL.GTID_EXECUTED”错误。出现该问题的原因主要是MySQL数据库支持GTID复制,支持主从复制。添加 --set-gtid-purged=OFF 即可避免该问题。
    摘自:https://www..com/article/28521101712/

导入

选中需要导入的库,右键选中Restore with 'mysql'
DataGrip导入导出数据+表结构
DataGrip导入导出数据+表结构
Run就可以直接导入成功了。
选择Run SQL Script后选择要导入的sql文件,也可以导入成功。