MySQL数据导出导出的三种办法(1316)

数据导入导出
基本概述

目前常用的有3中数据导入与导出方法:

  1. 使用mysqldump工具

    • 优点
      • 简单易用,只需一条命令即可完成数据导出。
      • 可以导出表结构和数据,方便完整备份。
      • 支持过滤条件,可以选择导出部分数据。
      • 生成的文件可以用于跨平台、跨版本的数据迁移。
    • 缺点
      • 导出的数据包含额外的INSERT语句,可能导致导入速度较慢。
      • 不能使用复杂的JOIN条件作为过滤条件。
    • 推荐场景
      • 需要备份和迁移表结构和数据。
      • 需要导出部分数据到其他系统或进行数据分析。
  2. 导出CSV文件

    • 优点
      • CSV格式通用,易于在不同应用程序间交换数据。
      • 可以利用文本编辑器查看和编辑数据。
      • 支持所有SQL写法的过滤条件。
    • 缺点
      • 导出的数据保存在服务器本地,可能受到secure_file_priv参数限制。
      • 每次只能导出一张表的数据。
      • 需要单独备份表结构。
    • 推荐场景
      • 需要将数据导出到本地文件系统或共享网络位置。
      • 需要将数据导入到其他非MySQL系统或应用程序。
  3. 物理拷贝表空间

    • 优点
      • 速度极快,尤其是对于大表数据的复制。
      • 可以直接复制整个表的数据,不需要逐条插入。
    • 缺点
      • 需要服务器端操作,无法在客户端完成。
      • 必须是全表拷贝,不能选择性导出数据。
      • 仅限于InnoDB引擎的表。
    • 推荐场景
      • 需要快速复制大表数据到另一个数据库或服务器。
      • 源表和目标表都使用InnoDB引擎。
      • 有服务器文件系统的访问权限。

在选择使用哪种方法时,还需要考虑数据的大小、是否需要跨平台迁移、是否有权限访问服务器文件系统、是否需要保留表结构等因素。通常,如果需要快速迁移大量数据并且对数据的完整性有高要求,物理拷贝表空间是一个好选择。如果数据量较小或者需要跨平台迁移,使用mysqldump或导出CSV文件可能更合适。

mysqldump工具
  1. 使用mysqldump导出数据

    mysqldump -h$host -P$port -u$user --add-locks=0 --no-create-info --single-transaction --set-gtid-purged=OFF db1 t --where="a>900" --result-file=/client_tmp/t.sql-h: 指定MySQL服务器的主机名。$host: 替换为实际的主机名。
    -P: 指定MySQL服务器的端口号。$port: 替换为实际的端口号。
    -u: 指定登录MySQL的用户名。`$user`: 替换为实际的用户名。
    --add-locks=0: 导出时不增加额外的锁。
    --no-create-info: 不导出表结构。
    --single-transaction: 在导出数据时不需要对表加表锁。
    --set-gtid-purged=OFF: 不输出与GTID相关的信息。
    db1: 指定要导出的数据库名。
    t: 指定要导出的表名。
    --where="a>900": 导出满足条件a>900的数据。
    --result-file=/client_tmp/t.sql: 指定导出结果的文件路径。
    
  2. 将数据导入到目标数据库

    mysql -h127.0.0.1 -P13000 -uroot db2 -e "source /client_tmp/t.sql"
    `-h`: 指定MySQL服务器的主机名。`root`: 使用root用户登录。
    `-P`: 指定MySQL服务器的端口号。
    `-u`: 指定登录MySQL的用户名。
    `db2`: 指定要导入数据的数据库名。
    `-e`: 后面跟随要执行的命令。
    `"source /client_tmp/t.sql"`: 执行source命令导入之前导出的SQL文件。
    
文件导入导出
  1. 导出为CSV文件

    SELECT * FROM db1.t WHERE a > 900 INTO OUTFILE '/server_tmp/t.csv';SELECT * FROM db1.t: 指定要导出的查询。
    WHERE a > 900: 导出满足条件的数据。
    INTO OUTFILE '/server_tmp/t.csv': 指定导出结果的CSV文件路径。
    
  2. 导入CSV文件到目标表

    LOAD DATA INFILE '/server_tmp/t.csv' INTO TABLE db2.t;LOAD DATA INFILE: 加载数据的命令。
    '/server_tmp/t.csv': 指定CSV文件的路径。
    INTO TABLE db2.t: 指定要导入数据的目标表。
    

在MySQL中secure_file_priv用于限制LOAD DATA INFILESELECT ... INTO OUTFILE这两个命令生成或读取文件的位置。这个参数的目的是为了增强安全性,防止意外或恶意地读取或写入服务器上的敏感文件。

如果secure_file_priv被设置为空字符串('')或者NULL,则表示没有文件路径限制,可以使用任意文件路径。但是,这种设置降低了系统的安全性,因此不推荐在生产环境中使用。

物理拷贝表空间
  1. 物理拷贝表空间

    • 首先创建一个相同结构的空表:

      CREATE TABLE db2.r LIKE db1.t;
      
    • 然后丢弃表空间:

      ALTER TABLE db2.r DISCARD TABLESPACE;
      
    • 导出表文件:

      FLUSH TABLES db1.t FOR EXPORT;
      
    • 拷贝文件:

      cp /path/to/db1/t.ibd /path/to/db2/r.ibd
      cp /path/to/db1/t.cfg /path/to/db2/r.cfg
      
    • 解锁表并导入表空间:

      UNLOCK TABLES;
      ALTER TABLE db2.r IMPORT TABLESPACE;
      
作者与版本更新计划

感谢您的阅读与支持!本文是《MySQL实战与优化》专栏中的一篇精选文章,该专栏共包含16篇文章,旨在为您提供实战中可直接应用的宝贵知识。

关注公众号【数舟】,获取作者最新动态,公众号后台回复【mysql2024】,即可免费领取这份包含16篇文章的完整的PDF专栏!

目前版本为v1.0,更新时间2024年4月10日。后续此文档更新与版本发布会同步到知识星球【数舟】中。

知识整理与创作不易,感谢大家理解与支持!

加入知识星球,您将获得更多独家内容、专栏更新以及与行业内专家和同行的互动交流机会。我们在知识星球等您,一起探索MySQL的深层次世界!

星球内目前包含300+精品文章,内容涵盖大数据、MySQL、运维、Python、调优、经验分享、数据分析等方向内容,会根据大家的学习需求更新更多方向的内容。

?? 立即扫描下方二维码,加入知识星球,与行业精英共同成长,开启您的专属学习之旅!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/65627.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Go 协程池 Gopool VS ants 原理解析

写过高并发的都知道,控制协程数量是问题的关键,如何高效利用协程,本文将介绍gopool和ants两个广泛应用的协程池,通过本文你可以了解到: 1. 实现原理 2. 使用方法 3. 区别 背景 虽然通过go func()即可轻量级实现并发&…

机器学习特征选择

一、特征选择概述 在实际的数据集中,往往包含了大量的特征,但并非所有特征都对我们要预测的目标变量(如分类任务中的类别标签,回归任务中的数值目标)有积极作用。有些特征可能携带的信息量极少,甚至会引入…

如何快速又安全的实现端口转发【Windows MAC linux通用】

背景 有很多程序是在虚拟机上运行的,返回的url 又是127.0.0.1。在个人电脑上调试需要解决这个问题。端口转发是一个不错的方法 可能的解决办法: 1.修改程序,返回虚拟机的ip (要改代码,换虚拟机还要再改代码&#xf…

无人机无法返航紧急处理方式!

一、检查飞行环境 了解禁飞原因和规定:首先,需要了解所在地区的无人机飞行规定,确认是否存在禁飞区或限飞区。如果处于禁飞区,应遵守相关规定,不要强行飞行。 检查天气情况:恶劣的天气条件(如…

NLP论文速读(NeurIPS 2024)|BERT作为生成式上下文学习者BERTs are Generative In-Context Learners

论文速读|BERTs are Generative In-Context Learners 论文信息: 简介: 本文探讨了在自然语言处理(NLP)领域中,上下文学习(in-context learning)的能力,这通常与因果语言模型&#x…

vue3<script setup>中使用Swiper

swiper网址 Swiper中文网-轮播图幻灯片js插件,H5页面前端开发 Swiper - The Most Modern Mobile Touch Slider 安装 Swiper npm安装: npm install swiper yarn安装: yarn add swiper 导入带有所有模块(捆绑包)的 Swiper //…

gala-gopher

title: 探索 Gala-Gopher:智能运维的新引擎 date: ‘2024-12-30’ category: blog tags: Gala-Gopher智能运维故障预测性能优化 sig: ebpf archives: ‘2024-12’ author:way_back summary: Gala-Gopher 作为智能运维领域的创新性项目,以其先进的技术和…

安装软件尝试

import sys import subprocess import os from PyQt5.QtWidgets import QApplication, QDialog, QVBoxLayout, QLabel, QLineEdit, QPushButtonclass InstallPathDialog(QDialog):"""提示框,用于显示并编辑安装路径"""def __init__(self, file_…

今日收获(C语言)

一.文件的打开 有这样一个结构体,它内部是文件信息区,文件信息区中的变化可以影响到硬盘中的数据。这个结构体的名字是FILE。我们如果想要写代码对文件进行各种操作,就需要一个指向文件信息区的指针,这个指针的类型是FILE*&#…

node.js卸载并重新安装(超详细图文步骤)

卸载node.js 重新安装nodejs 一、卸载 1、首先进入控制面板卸载程序 2、卸载后 到文件夹中进行进一步的删除 删除上述的几个文件夹 每个人可能不一样,总之是找到自己的nodejs安装路径,下面是我的 ①删除C:UsersAdminAppDataRoaming路径下的npm相关文件…

仓颉编程语言:编程世界的 “文化瑰宝”

我的个人主页 在当今编程领域百花齐放的时代,各种编程语言争奇斗艳,服务于不同的应用场景和开发者群体。然而,有这样一种编程语言,它承载着独特的文化内涵,宛如编程世界里一颗熠熠生辉的“文化瑰宝”,那就…

损失函数-二分类和多分类

二分类和多分类的损失函数 二分类 损失函数 L ( y , y ^ ) − ( y l o g ( y ^ ) ) ( 1 − y ) l o g ( 1 − y ^ ) L(y,\hat{y}) -(ylog(\hat{y})) (1-y)log(1-\hat{y}) L(y,y^​)−(ylog(y^​))(1−y)log(1−y^​) 其中真实标签表示为y(取值为 0 或 1&#…

【模电刷题复习--填空】

如有错误,欢迎各位大佬在评论区批评指正 模电刷题 一、填空题1.本征半导体中,若掺入微量的__五__价元素,则形成___n___型半导体,其多数载流子是自由电子,若掺入微量的__三__价元素,则形成__p__型半导体。其…

Android使用JAVA调用JNI原生C++方法

1.native-lib.cpp为要生成so库的源码文件 2.JNI函数声明说明 NewStringUTF函数会返回jstring JNI函数声明规则 3.JAVA中声明及调用JNI函数 声明: 调用

DAY178内网渗透之内网对抗:横向移动篇入口差异切换上线IPC管道ATSC任务Impacket套件UI插件

1.内网横向移动 1、横向移动篇-入口点分析-域内域外打点 2、横向移动篇-IPC利用-连接通讯&计划任务, 3、横向移动篇-IPC利用-命令模式&工具套件 1.1 横向移动入口知识点 收集到域内用户和凭据后,为后续利用各种协议密码喷射通讯上线提供条件,…

宠物行业的出路:在爱与陪伴中寻找增长新机遇

在当下的消费市场中,如果说有什么领域能够逆势而上,宠物行业无疑是一个亮点。当人们越来越注重生活品质和精神寄托时,宠物成为了许多人的重要伴侣。它们不仅仅是家庭的一员,更是情感的寄托和生活的调剂。然而,随着行业…

MySQL数据库——索引结构之B+树

本文先介绍数据结构中树的演化过程,之后介绍为什么MySQL数据库选择了B树作为索引结构。 文章目录 树的演化为什么其他树结构不行?为什么不使用二叉查找树(BST)?为什么不使用平衡二叉树(AVL树)&a…

大模型—Ollama 结构化输出

Ollama 结构化输出 Ollama现在支持结构化输出,使得可以按照由JSON模式定义的特定格式来约束模型的输出。Ollama的Python和JavaScript库已经更新,以支持结构化输出。 结构化输出的用例包括: 从文档中解析数据从图像中提取数据结构化所有语言模型响应比JSON模式更可靠和一致开…

欧拉计划 Project Euler 35 题解

欧拉计划 Problem 35 题解 题干思路code暴力筛法rotate函数使用语法示例代码 题干 思路 一个很自然的思路就是暴力找&#xff0c;遍历一百万之内的所有数&#xff0c;也可以先把一百万以内所有的素数筛出来然后从中取选。这里我使用的是暴力算法。 code 暴力 #include <…

JVM常见排查问题的命令及可视化工具

前置&#xff1a; RMI协议&#xff1a;java的一个远程调用协议&#xff0c;在不同的JVM之间可以进行接口的调用&#xff0c;但数据不安全&#xff0c;且仅限java&#xff1b; 一、常见命令及用法 1、jps&#xff1a;与Linux的ps命令有点类似&#xff0c;查看系统中在运行的J…