GVKun编程网logo

MySQL命令行导出导入数据库实例详解(mysql 命令行导出数据)

25

这篇文章主要围绕MySQL命令行导出导入数据库实例详解和mysql命令行导出数据展开,旨在为您提供一份详细的参考资料。我们将全面介绍MySQL命令行导出导入数据库实例详解的优缺点,解答mysql命令行

这篇文章主要围绕MySQL命令行导出导入数据库实例详解mysql 命令行导出数据展开,旨在为您提供一份详细的参考资料。我们将全面介绍MySQL命令行导出导入数据库实例详解的优缺点,解答mysql 命令行导出数据的相关问题,同时也会为您带来Go语言调用mysql.exe和mysqldump命令行导入导出数据库、MySQL 命令行导入数据(sql 文件)、mysql 命令行导出导入数据、mysql 导出导入数据库(Mysqldump)备份的实用方法。

本文目录一览:

MySQL命令行导出导入数据库实例详解(mysql 命令行导出数据)

MySQL命令行导出导入数据库实例详解(mysql 命令行导出数据)

MySQL命令行导出数据库:

1,进入MysqL目录下的bin文件夹:cd MysqL中到bin文件夹的目录

如我输入的命令行:cd C:\Program Files\MysqL\MysqL Server 5.5\bin
(或者直接将windows的环境变量path中添加该目录)

 2,导出数据库:MysqLdump -u 用户名 -p 数据库名 > 导出的文件名

如我输入的命令行:MysqLdump -u lmapp -p lmapp -P 3308 > lmapp.sql   (输入后会让你输入进入MysqL的密码)
(如果导出单张表的话在数据库名后面输入表名即可)

       MysqL导出数据库一个表
  MysqLdump -u 用户名 -p 数据库名 表名> 导出的文件名
  MysqLdump -u lmapp -p lmapp users> test_users.sql (结尾没有分号)

3、会看到文件news.sql自动生成到bin文件下  

 导出时,遇到上面的问题。

解决措施:加个参数-P 3308(MysqL服务端口)即可解决问题。

命令行导入数据库:

1,将要导入的.sql文件移至bin文件下,这样的路径比较方便
2,同上面导出的第1步
3,进入MysqL:MysqL -u 用户名 -p
如我输入的命令行:MysqL -u root -p   (输入同样后会让你输入MysqL的密码)
4,在MysqL-Front中新建你要建的数据库,这时是空数据库,如新建一个名为news的目标数据库
5,输入:MysqL>use 目标数据库名
如我输入的命令行:MysqL>use news;
6,导入文件:MysqL>source 导入的文件名;

如我输入的命令行:MysqL>source news.sql; 

       注:由于导入数据库的规模、数据结构不同,导入所需时间会有较大差异。我导入的数据库有123M,花费将近5个小时。期间以为机器宕掉了,仔细观察命令行界面发现,导入是在正常进行的。导入成功后的界面如下:

      


      注:导入单张数据表时,使用类似use lmapp lm_area 、source lm_area.sql的sql语句。原数据表可存在,导入后的数据表会覆盖同名已存在的数据表。

      MysqL备份和还原,都是利用MysqLdump、MysqL和source命令来完成的。

1.Win32下MysqL的备份与还原

1.1 备份

开始菜单 | 运行 | cmd |利用“cd \Program Files\MysqL\MysqL Server 5.0\bin”命令进入bin文件夹 | 利用“MysqLdump  -u 用户名 -p databasename >exportfilename”导出数据库到文件,如MysqLdump -u root -p voice>voice.sql,然后输入密码即可开始导出。

1.2 还原

进入MysqL Command Line Client,输入密码,进入到“MysqL>”,输入命令"show databases;",回车,看看有些什么数据库;建立你要还原的数据库,输入"create database voice;",回车;切换到刚建立的数据库,输入"use voice;",回车;导入数据,输入"source voice.sql;",回车,开始导入,再次出现"MysqL>"并且没有提示错误即还原成功。

2.Linux下MysqL的备份与还原

2.1 备份

[root@localhost ~]# cd /var/lib/MysqL (进入到MysqL库目录,根据自己的MysqL的安装情况调整目录)
[root@localhost MysqL]# MysqLdump -u root -p voice>voice.sql,输入密码即可。

2.2 还原

法一:

[root@localhost ~]# MysqL -u root -p 回车,输入密码,进入MysqL的控制台"MysqL>",同1.2还原。

法二:

[root@localhost ~]# cd /var/lib/MysqL (进入到MysqL库目录,根据自己的MysqL的安装情况调整目录)
[root@localhost MysqL]# MysqL -u root -p voice<voice.sql,输入密码即可。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Go语言调用mysql.exe和mysqldump命令行导入导出数据库

Go语言调用mysql.exe和mysqldump命令行导入导出数据库

最近准备将我平时写的ruby和python小工具推广到整个小组,以提高小组工作效率。但是效果不太理想,主要是脚本语言依赖环境,安装配置比较繁琐,组员们虽然很羡慕我的工具,但是愿意尝试很少。

Go语言最近比较火,了解了下发现它编译后生成exe,没有依赖,发给其他人就可以直接用,于是我又萌生了将部分通用工具用Go改写的念头。

第一个改写的工具很简单,就是将远程的数据库数据导出到本地并导入到本地的数据库。在ruby 中代码中主要的逻辑是以下两行代码

`mysqldump -h#{host} -u#{user} -p#{pass} #{db} --complete-insert --skip-comments --compact --add-drop-table >sqls/#{websitename}.sql`
`mysql --reconnect --default-character-set=utf8 -h #{exporthost} -u#{exportuser} -p#{exportpass} --database=#{exportdb} < #{file}`

就是这么简单的两行命令行代码在Go开发中,却碰了壁,网上搜索一番也没有直接的回答,在网上仔细研究了相关论坛回帖的只字片语和本人的不断尝试,终于解决了这个问题。

Go相关代码如下:

mysqldump:

func exportDB(info WebInfo,webname string) error{
    argv := []string{"--complete-insert","--skip-comments","--compact","--add-drop-table","-h"+info.Mysqlhost,"-u"+info.Mysqluname,"-p"+info.Mysqlupasswd,info.Mysqldb}
    cmd := exec.Command("mysqldump", argv...)
    f,err:=os.OpenFile("sqls/"+webname+".sql",os.O_CREATE|os.O_RDWR,os.ModePerm|os.ModeTemporary)
    if(err!=nil){
        fmt.Println("打开sql文件失败")
        return err
    }
    defer f.Close()
    cmd.Stdout=f
    cmd.Stderr=os.Stderr
    cmd.Start()
    cmd.Run()
    cmd.Wait()
    return nil
}

mysql:

func importToLocal(info Info) error{
    argv := []string{"--reconnect","--default-character-set=utf8","-h"+info.Mysqlhost,"-u"+info.Mysqluname,"-p"+info.Mysqlupasswd,"--database="+info.Mysqldb}
    cmd := exec.Command("mysql", argv...)
    f,err:=os.Open("sqls/"+info.Webname+".sql")
    if(err!=nil){
        fmt.Println("读取sql文件失败")
        return err
    }
    defer f.Close()
    cmd.Stdin=f
    cmd.Stdout=os.Stdout
    cmd.Stderr=os.Stderr
    cmd.Start()
    cmd.Run()
    cmd.Wait()
    return nil
}

上面两段代码,是我整个工具代码中的一部分,无法直接复制使用,要使用的话,首先要导入os/exec等package,然后将函数中部分变量替换成自己的数据库信息。

import (
	"fmt"
	"os"
	"os/exec"
)

type Info struct {
    Webname string
	Mysqlhost string
	Mysqldb string
	Mysqluname string
	Mysqlupasswd string
}

type WebInfo Info

下面说说Go中调用命令行的一些迷惑地方。

1. exec.Command 里调用命令行,必须将命令行参数拆分成数组,放入函数的参数中。这个相对而言比较容易察觉。

2. exec.Command 不支持命令行中的 < 和 > 重定向操作,如果要实现类似的功能,可以在代码里打开文件,并将文件描述符f赋值给 cmd.Stdin或者cmd.Stdout。这个问题很隐蔽,是调用命令行中很让人困惑的地方。

最后说说新学Go语言的感受,相对于php、ruby、python写起来还是很繁琐的。不过作为一个静态编译类型的语言,Go语言还是挺好入门的。编译速度很快。安装vscode插件后可以在编写代码同时验证代码语法,代码提示也很全,开发起来很方便。总体而言,开发效率挺高的。

MySQL 命令行导入数据(sql 文件)

MySQL 命令行导入数据(sql 文件)

进入 MySQL:

1.
mysql -u 用户名 -p
(输入同样后会让你输入 MySQL 的密码)

2.
mysql>use 目标数据库名

3.
mysql>source 导入的 sql 文件

 

mysql 命令行导出导入数据

mysql 命令行导出导入数据

导出数据库(sql脚本) 

mysqldump -u 用户名 -p 数据库名 > 导出的文件名
mysqldump -u root -p --databases db_name > test_db.sql                 ##得到整个数据库,最全面;;不要--databases也行,就是不够信息全面

mysql导出数据库一个表


mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
mysqldump -u wcnc -p test_db users> test_users.sql                          ##(结尾没有分号)得到数据库my_10中的表students,简捷

mysql导入sql文件

1,进入MySQL:mysql -u 用户名 -p
  输入的命令行:mysql -u root -p (输入同样后会让你输入MySQL的密码)
2,在MySQL-Front中新建你要建的数据库,这时是空数据库,如新建一个名为news的目标数据库(可能会报错,不用理他)
  输入:mysql>use 目标数据库名
  输入的命令行:mysql>use news;
3,导入文件:mysql>source 导入的来源文件名; 
  输入的命令行:mysql>source news.sql;

 

下面摘自 http://www.cnblogs.com/yuwensong/p/3955834.html  

window下

1.导出整个数据库

mysqldump -u 用户名 -p 数据库名 > 导出的文件名
mysqldump -u dbuser -p dbname > dbname.sql

2.导出一个表

mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
mysqldump -u dbuser -p dbname users> dbname_users.sql

3.导出一个数据库结构

mysqldump -u dbuser -p -d --add-drop-table dbname >d:/dbname_db.sql
-d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table

4.导入数据库

常用source 命令
进入mysql数据库控制台,如
mysql -u root -p
mysql>use 数据库
然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
mysql>source d:/dbname.sql


linux下

一、导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径):
1、导出数据和表结构:

mysqldump -u用户名 -p密码 数据库名 > 数据库名.sql
#/usr/local/mysql/bin/ mysqldump -uroot -p abc > abc.sql
敲回车后会提示输入密码

2、只导出表结构

mysqldump -u用户名 -p密码 -d 数据库名 > 数据库名.sql
#/usr/local/mysql/bin/ mysqldump -uroot -p -d abc > abc.sql

注:/usr/local/mysql/bin/ ---> mysql的data目录

二、导入数据库
1、首先建空数据库

mysql>create database abc;

2、导入数据库
方法一:

(1)选择数据库
mysql>use abc;
(2)设置数据库编码
mysql>set names utf8;
(3)导入数据(注意sql文件的路径)
mysql>source /home/abc/abc.sql;

方法二:

mysql -u用户名 -p密码 数据库名 < 数据库名.sql
#mysql -uabc_f -p abc < abc.sql

mysql 导出导入数据库(Mysqldump)备份

mysql 导出导入数据库(Mysqldump)备份

  1. 使用mysql不熟练啊!!!
  2. mysqldump导出数据库,必须以cmd命令行的形式,在Navicat中以新建查询形式使用Mysqldump不好使的。(本来使用Navicat转储SQL,再导入SQL,但是报错,半天没解决闹心,决定使用Mysqldump)
  3. Mysqldump在cmd中导出数据库,有一点必须要注意,就是不能登录mysql,如果使用mysql -h 47.94.88.36 -u root -p登录了。那么再使用mysqldump -h 47.94.88.36 -u root -p dbname tablename > db.sql导出数据表结构和数据会提示你加分号,加了分号之后会报错(我觉得和分号无关,主要是因为登录了吧?)。意思就是不能登录,要在未登录的状态下使用mysqldump -h 47.94.88.36 -u root -p dbname tablename > db.sql 命令,然后提示输入密码,就能够成功导出数据了。而且在使用此命令的时候,后面不能加 ;。
  4. 备份
    1. 备份整个数据库:
      mysqldump -uroot -proot --lock-all-tables --databases emotional_course > e:/project/SQLBackUp/course.sql       #emotional_course   是数据库名
      # 导出一个数据库, 注意选项参数 --databases 这里, 不要使用--database官方不推荐使用,而且以后的版本可能会移除.(会有一个warning)
      mysqldump -uroot -proot emotional_course > e:/project/SQLBackUp/course.sql #区别是上面的会锁表(全局读锁),并且在SQL文件的第一行会创建数据库, 这条语句不会再SQL文件中创建数据库

      --lock-all-tables: 在mysqldump导出的整个过程中以read方式锁住所有表, information_schema(不会导出)performance_schema(不会导出)指定--lock-all-tables参数,那么从一开始就对整个mysql实例加global read lock锁。这整个全局读锁会一直持续到导出结束。导出的数据库在数据一致性上是被严格保证的,也就是数据是一致性的。
      在备份的时候, 备份数据会上锁(写锁).

    2. 备份某个表:
      mysqldump -uroot -proot emotional_course user > e:/project/SQLBackUp/course_user.sql    #备份一个表
      mysqldump -uroot -proot emotional_course user course > e:/project/SQLBackUp/userandcourse.sql     #备份多个表, 注意表名与表名之间是空格, 不要加标点符号(备份user表和course表)

       

    3. 备份多个数据库:
      mysqldump -uroot -proot --databases emotional_course bbb_cxk > e:/project/SQLBackUp/userandcourse.sql          #需要注意的点和上面的一样,库名和库名之间只有空格,  还需要注意一点, 就是第一次备份数据库到a.sql文件, 
      如果第二次备份还是a.sql文件, 那么会覆盖掉之前的备份, 需要特别注意的.

       

    4. 备份全部数据库
      mysqldump -uroot -proot --all-databases > e:/project/SQLBackUp/userandcourse.sql      # 输入这个命令后会报错,提示信息如下:
      -- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly.
      因为mysqldump默认是不备份事件表的,只有加了--events 才会解决,加上--events --ignore-table=mysql.events参数即可.
      mysqldump -uroot -proot --events --ignore-table=mysql.events --all-databases > e:/project/SQLBackUp/userandcourse.sql

       mysql数据库(系统自带的)会被备份, information_schema  和 performance_schema  两个数据库不会被备份.

    5. 编写shell脚本执行mysql备份
      #!/bin/bash
      number=30  #保留30天的备份文件
      backup_dir=/home/bneglect/SQLBackup  #保存备份文件的目录
      backup_date=`date +%Y%m%d%H%M%S`  #备份时间
      username=root  #数据库用户
      password=root  #数据库密码
      db_name=fortune  #数据库名
      if [ ! -d $backup_dir ]
      then
          mkdir -p $backup_dir;
      fi
      #  判断目录是否存在, 不存在则创建
      mysqldump -u$username -p$password $db_name > 
       $backup_dir/$db_name-$backup_date.sql  #备份的目录及文件名
      echo "create $backup_dir/$db_name-$backup_date.sql" >> $backup_dir/backup.log  #备份的日志
      count=`ls -l -crt $backup_dir/*.sql | awk ''{print $9}'' | wc -l`  #统计目录下的SQL文件个数
      delfile=`ls -l -crt $backup_dir/*.sql | awk ''{print $9}'' | head -1` #第一个文件.SQL文件
      if [ $count -gt $number ]
      then
          rm -f $deffile
          echo "delete $delfile" >> $backup_dir/backup.log
      fi
      #  删除最早的备份文件, 一直保留30天的即可

       使用-ppassword会报一个warning, 提示在命令行下输入密码不安全, 其实就是想要用户Mysqldump 回车之后输入密码, 因为命令行下输入密码会暴露明文密码的. 不过不影响备份的. 如果不想报这个warning, 可以去配置mysqld.cnf 配置文件.

    6. 编辑定时任务, 让shell脚本自动执行备份数据库. 
      crontab -e 编辑计划任务, 第一次会选择文本模式, 选择3(vim.basic)即可. 
      30 2 * * * /home/bneglect/bneglect_test/mysqlBackUp.sh

      保存退出, OK了.有的服务器直接wq就可以保存退出. 有的按照------> crontab编辑文件后保存方式  Ctrl+o, 出现"file name to write.."然后回车, 然后Ctrl+x  显示"crontab: installing new crontab"成功(Ubuntu系统)

    7. 注意如果计划任务不执行, 一般从4各方面着手排查
      1. cron服务是否启动(Ubuntu上是cron, 有的系统是crond) service cron status 或 systemctl status cron 查看服务状态 service cron start 或 systemctl start cron 启动 
      2. shell脚本是否有语法错误, 可以手动执行shell脚本, 如果成功执行, 就是别的原因
      3. shell脚本的路径要写成绝对路径,不能使用相对路径.
      4. 创建计划任务的用户没有执行shell脚本的权限, 举例: bneglect创建的计划任务, 但是mysqlBackUp.sh 的属主和属组可能是root(反正不是bneglect), 解决办法: (1)添加bneglect到root属组(2)修改权限为777(3)属主改成bneglect, 不过一般都是改 777

今天关于MySQL命令行导出导入数据库实例详解mysql 命令行导出数据的讲解已经结束,谢谢您的阅读,如果想了解更多关于Go语言调用mysql.exe和mysqldump命令行导入导出数据库、MySQL 命令行导入数据(sql 文件)、mysql 命令行导出导入数据、mysql 导出导入数据库(Mysqldump)备份的相关知识,请在本站搜索。

本文标签: