mysql_数据库(或指定表)的备份(mysqldump)和到导入的若干方案/数据的导入(Navicat:excel的批量导入到某一张表)

mysql_数据库(或指定表)的备份和到导入的若干方案/数据的导入(Navicat:excel的批量导入到某一张表)

references

mysqldump文档:

重命名数据库

  • 较新版本的mysql 不再支持直接重命名数据库
  • 可以采用的策略:
    • 备份数据库数据(结构+数据)
      新建一个数据库(指定命名为想要的名字)
      将数据导入到新名字的数据库中

使用命令行方案

  • 高效(推荐)

备份(导出整个数据库)

  • 使用mysqldump命令来导出数据库(为一个完整,保持依赖建表顺序的sql文件,这一点很重要,如果每个表分开导出,那么在导入的时候,需要有严格的顺序(因为某些外键的约束关系,被参考表需要先建立))
mysqldump for linux(debain-like)
  • 下面的语句是在linux下执行的
  • sudo mysqldump -u root -p1 ela4 > ela4.sql
    • 上述命令分为三个部分
      • 选择用户信息并,并以该用户的身份登录数据库
      • 选择数据库(名字)
      • 导出到指定文件
mysqldump for windows

即,较linux将sudo去掉

  • mysqldump -u root -p1 ela4 > ela4.sql

导出指定的表

同样的,在终端(cmd/powershell/bash上执行,而不是在登录mysql后执行)使用的是 mysqldump

  • 也不要误写为 mysql命令!
  • 导出后记得检查

例如,导出ela4数据库中的指定表(word_star)

  • mysqldump -u root -p1 ela4 word_star > word_start.sql
  • cat word_start.sql

导入备份的文件(sql)

如果是在windows下,

  • 先登录到mysql
  • 选中某个需要导入备份内容的数据库(如果没有合适的数据库,请手动创建数据库)
  • 执行备份的sql文件
  • mysql> source <backup_sql_file>
    • 例如
    • mysql> source c:/users/cxxu/desktop/ela4.sql
      • 此命令假设被导入的文件位于桌面(填写实际路径即可)

不恰当的权限可能的导致的问题(optional)

  • 如果您的数据库中存储的字符比较乱,可能导致导出时出现乱码(异常报错(mysqldump: Got errno 2 on write))
  • 我在windows下使用了scoop安装的 sudo 命令,在导出的时候出现了上述异常(当然,一般的用户在windows下没有sudo可用)
  • 如果您也有类似环境,请不要在windows上使用sudo!

IDEA&dump

在这里插入图片描述

  • 在路径中填写您的mysql安装目录下的mysqldump.exe
    在这里插入图片描述

使用GUI方案

navicate

  • 简单
  • 导出形式多样直观
  • 但是导入的时候需要考虑表间依赖关系,较为繁琐

image-20220416204439619

image-20220416204514556

其他GUI方案

  • IDEA/DataGrip
  • Oracle mysql GUI

批量导入excel 文件

在我使用的过程中没有发现能够较好的导入多张表格的方式(数据量较大,分成了多个excel)

  • 可以使用 python pandas将这些表批量的合并,再输出一整份的表格

    • 该方案可以方便的对数据进行调整(譬如去重操作/排序操作/代码量总体较少)

      但是有些地方需要注意,(某些字符串会被解释成特殊的python对象,需要加参数设定)

    • os文件读取

    • pandas 文件读取以及合并(append)

      • mport os
        import pandas as pd
        ##
        dir='d:/repos/pythonLearn/pandasLearn/out/'
        files=os.listdir(dir)
        for item in files:
        p=item.index('~')
        order_str=item[:p]
        order=int(order_str)
        # print(order)
        files.sort(key=lambda item:int(item[:item.index('~')]))
        sorted_file_list=files
        # print(sorted_file_list)
        # print(files)
        os.chdir(dir)
        dfs=pd.DataFrame()
        # dfs=pd.read_excel(sorted_file_list[0])
        sample=sorted_file_list[:]
        for item in sample:
        # item_df=pd.read_excel(item,dtype=str)#NULL还是会被解析为NAN
        item_df=pd.read_excel(item,na_filter=False)#OK,it keep the `NULL` string in excel
        # print(item_df)
        # df.append()并不会原地修改,而是会返回一个处理好的dataframe(这和sort)函数相反.
        dfs=dfs.append(item_df)#,ignore_index=True仅仅是将index改为0...n
        shape=dfs.shape
        print(shape)
        dfs_raw=dfs.loc[:,'spelling':]
        # print(dfs)
        ## drop duplicated row of column value
        unique_df=dfs_raw.drop_duplicates(subset=['spelling'],keep='first')
        unique_df.to_excel(dir+"../"+"Integer5500.xlsx",index=False)
  • 使用excel手工的合并

  • VBA程序合并

posted @   xuchaoxin1375  阅读(59)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示