文章目录



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)和到导入的若干方案/数据的导入(Navicat:excel的批量导入到某一张表)_mysql

  • 在路径中填写您的mysql安装目录下的​​mysqldump.exe​​​mysql_数据库(或指定表)的备份(mysqldump)和到导入的若干方案/数据的导入(Navicat:excel的批量导入到某一张表)_mysql_02

使用GUI方案

navicate

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


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

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

其他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程序合并