热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySQL数据的导入与导出

本文针对window操作系统与mysql8.0的版本。1.mysql导出sql文件这里直接使用mysql提供的mysqlpump工具,以下是mysqlpump说明mysqlpump

本文针对window操作系统与mysql8.0的版本。

1.mysql导出sql文件

这里直接使用mysql提供的mysqlpump工具,以下是mysqlpump说明

mysqlpump客户实用程序执行逻辑备份,产生一组能够被执行以再现原始数据库对象定义和表数据的SQL语句。它转储一个或多个MySQL数据库以备份或传输到另一个SQL服务器。

mysqlpump功能包括:

  • 并行处理数据库和数据库中的对象,以加速转储过程

  • 更好地控制要转储的数据库和数据库对象(表,存储程序,用户帐户)

  • 将用户帐户转储为帐户管理语句(CREATE USER, GRANT)而不是作为插入mysql系统数据库

  • 创建压缩输出的能力

  • 进度指标(值是估计值)

  • 对于转储文件重新加载,InnoDB通过在插入行之后添加索引来为表 创建更快的二级索引

mysqlpump至少需要SELECT转储表特权,SHOW VIEW转储视图,TRIGGER转储触发器以及未使用LOCK TABLES该 --single-transaction选项的 特权转储用户定义需要系统数据库SELECT权限mysql某些选项可能需要其他权限,如选项说明中所述。

(1)单个数据库导出

语法:mysqlpump -h [ip] -P [port] -u [user_name] -p[password] db_name [tbl_name1 tbl_name2 ...] > file_path

(2)多个数据库导出

语法:mysqlpump -h [ip] -P [port] -u [user_name] -p[password] --databases db_name1 db_name2 ... > file_path

mysqlpump功能很强大还支持多种选项,具体选项可以查看官方文档

(3)将数据从一个MySQL服务器复制到另一个MySQL服务器

语法:mysqldump -h [ip] -P [port] -u [user_name] -p[password] --opt db_name | mysql -h [ip] -P [port] -u [user_name] -p[password] --compress db_name

--opt:默认情况下启用此选项 它提供快速转储操作并生成转储文件,可以快速重新加载到MySQL服务器。 --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset是组合的简写。

--compress:压缩客户端和服务器之间发送的所有信息(如果可能)。从MySQL 8.0.18开始,不推荐使用此选项。它将在未来的MySQL版本中删除。

 

2.mysql执行sql文件

进入mysql客户端执行:source file_path 或 \file_path命令。

 

3.mysql导入批量数据

LOAD DATA完整语法:

技术图片

LOW_PRIORITY:如果使用LOW_PRIORITY修饰符,则LOAD DATA 语句的执行将延迟,直到没有其他客户端从表中读取。这会影响只使用表级锁只存储引擎(例如MyISAM, MEMORYMERGE)。

 

CONCURRENT:如果使用满足并发插入条件CONCURRENTMyISAM指定修饰符 (即,它在中间不包含空闲块),则其他线程可以在LOAD DATA执行时从表中检索数据 LOAD DATA即使没有其他线程同时使用该表,此修饰符也会影响的性能

 

LOCAL:如果LOCAL指定,则文件由客户端主机上的客户端程序读取并发送到服务器。该文件可以作为完整路径名提供,以指定其确切位置。如果以相对路径名的形式给出,则相对于启动客户端程序的目录解释名称。

如果LOCAL未指定,则文件必须位于服务器主机上,并由服务器直接读取。LOCAL加载操作读取位于服务器上的文本文件。出于安全原因,此类操作要求您拥有该FILE 权限。此外,非LOCAL加载操作受 secure_file_priv系统变量设置的限制。如果变量值是非空目录名,则要加载的文件必须位于该目录中。如果变量值为空(这是不安全的),则文件只需要服务器可读。

 

file_name:文件路径,在Windows上,将路径名中的反斜杠指定为正斜杠或加倍反斜杠。

 

REPLACEIGNORE 输入行的修饰处理控制复制唯一键值的现有行:

  • 如果指定REPLACE,则输入行将替换现有行。换句话说,主键或唯一索引的值与现有行的值相同。

  • 如果指定IGNORE,则会丢弃复制唯一键值上现有行的行。

  • 如果未指定任何修饰符,则行为取决于是否LOCAL指定修饰符。如果没有LOCAL,则在找到重复键值时会发生错误,并忽略文本文件的其余部分。使用时LOCAL,默认行为与IGNORE 指定的相同这是因为服务器无法在操作过程中停止传输文件。

PARTITION:LOAD DATA支持显式分区选择,使用PARTITION 带有一个或多个以逗号分隔的分区,子分区或两者的名称列表的选项。使用此选项时,如果文件中的任何行无法插入列表中指定的任何分区或子分区,则语句将失败,并显示错误“ 找到与给定分区集不匹配的行”。有关更多信息和示例。对于使用使用表锁的存储引擎的分区表,例如MyISAM, LOAD DATA无法修剪任何分区锁。这不适用于使用采用行级锁定的存储引擎的表,例如 InnoDB

CHARACTER SET:服务器使用character_set_database系统变量指示的字符集 来解释文件中的信息。 SET NAMES并且设置 character_set_client不影响输入的解释。如果输入文件的内容使用的字符集与默认值不同,通常最好使用该CHARACTER SET子句指定文件的字符集

FIELDS:如果指定FIELDS子句,则每个子句(TERMINATED BY, [OPTIONALLY] ENCLOSED BY和 ESCAPED BY)也是可选的,但必须至少指定其中一个子句允许这些子句的参数仅包含ASCII字符。

  TERMINATED BY:字段与字段之间的分隔符。

  ENCLOSED BY:包裹字段的字符,仅用于从具有字符串数据类型。

  ESCAPED BY:控制如何读取或写入特殊字符,即描述的转义字符。

LINES:

  STARTING BY:如果所有输入行都有一个您想要忽略的公共前缀,则可以使用跳过前缀和前面的任何内容如果一行不包含前缀,则跳过整行。

  TERMINATED BY:每行与每行之间的分隔符。

IGNORE number:该选项可用于忽略文件开头的行.

col_name_or_user_var:默认情况下,如果在LOAD DATA语句末尾没有提供列列表 ,则输入行应包含每个表列的字段。如果只想加载某些表的列,请指定列列表。

SET子句:每个col_name_or_user_var值都是列名或用户变量。使用用户变量,该SET子句使您可以在将结果分配给列之前对其值执行预处理转换。

4.mysql导出批量数据

语法:SELECT [col_name [,col_name] ...] INTO OUTFILE ‘file_path‘ [CHARACTER SET charset_name] 

    [{FIELDS | COLUMNS}

      [TERMINATED BY string]

      [[OPTIONALLY] ENCLOSED BY char]

      [ESCAPED BY char]

    ]

    [LINES

      [STARTING BY string]

      [TERMINATED BY string]

    ]

     FROM table_name;

SELECT ... INTO OUTFILE语句主要用于让您快速将表转储到服务器计算机上的文本文件中。如果要在服务器主机之外的其他主机上创建生成的文件,通常无法使用, SELECT ... INTO OUTFILE因为无法相对于服务器主机的文件系统写入文件的路径。

但是,如果MySQL客户端软件安装在远程计算机上,则可以使用客户端命令(例如 在客户端主机上生成文件)。 mysql -e "SELECT ..." > file_name

如果可以使用服务器文件系统上的网络映射路径访问远程主机上文件的位置,则还可以在服务器主机以外的其他主机上创建生成的文件。在这种情况下,目标主机上不需要存在 mysql(或其他一些MySQL客户端程序)。

SELECT ... INTO OUTFILE是补充LOAD DATA列值将写入转换为CHARACTER SET 子句中指定的字符集如果不存在此类子句,则使用binary字符集转储值实际上,没有字符集转换。如果结果集包含多个字符集中的列,则输出数据文件也将如此,您可能无法正确重新加载文件。

MySQL数据的导入与导出


推荐阅读
  • 本文介绍如何通过SSH协议使用Xshell远程连接到Ubuntu系统。为了实现这一目标,需要确保Ubuntu系统已安装并配置好SSH服务器,并保证网络连通性。 ... [详细]
  • 本文介绍如何在Linux服务器之间使用SCP命令进行文件传输。SCP(Secure Copy Protocol)是一种基于SSH的安全文件传输协议,支持从远程机器复制文件到本地服务器或反之。示例包括从192.168.45.147复制tomcat目录到本地/home路径。 ... [详细]
  • 优化局域网SSH连接延迟问题的解决方案
    本文介绍了解决局域网内SSH连接到服务器时出现长时间等待问题的方法。通过调整配置和优化网络设置,可以显著缩短SSH连接的时间。 ... [详细]
  • 本文介绍如何使用阿里云的fastjson库解析包含时间戳、IP地址和参数等信息的JSON格式文本,并进行数据处理和保存。 ... [详细]
  • MATLAB实现n条线段交点计算
    本文介绍了一种通过逐对比较线段来求解交点的简单算法。此外,还提到了一种基于排序的方法,但该方法较为复杂,尚未完全理解。文中详细描述了如何根据线段端点求交点,并判断交点是否在线段上。 ... [详细]
  • 高效解决应用崩溃问题!友盟新版错误分析工具全面升级
    友盟推出的最新版错误分析工具,专为移动开发者设计,提供强大的Crash收集与分析功能。该工具能够实时监控App运行状态,快速发现并修复错误,显著提升应用的稳定性和用户体验。 ... [详细]
  • andr ... [详细]
  • 本文介绍如何使用Python进行文本处理,包括分词和生成词云图。通过整合多个文本文件、去除停用词并生成词云图,展示文本数据的可视化分析方法。 ... [详细]
  • 并发编程:深入理解设计原理与优化
    本文探讨了并发编程中的关键设计原则,特别是Java内存模型(JMM)的happens-before规则及其对多线程编程的影响。文章详细介绍了DCL双重检查锁定模式的问题及解决方案,并总结了不同处理器和内存模型之间的关系,旨在为程序员提供更深入的理解和最佳实践。 ... [详细]
  • 本文详细介绍了如何在CentOS 7操作系统上安装和配置Grafana,包括必要的依赖项安装、插件管理以及服务启动等步骤。 ... [详细]
  • 解决JAX-WS动态客户端工厂弃用问题并迁移到XFire
    在处理Java项目中的JAR包冲突时,我们遇到了JaxWsDynamicClientFactory被弃用的问题,并成功将其迁移到org.codehaus.xfire.client。本文详细介绍了这一过程及解决方案。 ... [详细]
  • 本文详细介绍了Git分布式版本控制系统中远程仓库的概念和操作方法。通过具体案例,帮助读者更好地理解和掌握如何高效管理代码库。 ... [详细]
  • 使用GDI的一些AIP函数我们可以轻易的绘制出简 ... [详细]
  • 本题探讨如何通过最大流算法解决农场排水系统的设计问题。题目要求计算从水源点到汇合点的最大水流速率,使用经典的EK(Edmonds-Karp)和Dinic算法进行求解。 ... [详细]
  • 落樱3D v0.5是一款在Android平台上发布的3D美少女格斗游戏,本次更新带来了多项新功能和优化。 ... [详细]
author-avatar
葉_沛峰
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有