文章目录
- mysql_数据库(或指定表)的备份和到导入的若干方案/数据的导入(Navicat:excel的批量导入到某一张表)
- references
- 重命名数据库
- 使用命令行方案
- 备份(导出整个数据库)
- mysqldump for linux(debain-like)
- mysqldump for windows
- 导出指定的表
- 导入备份的文件(sql)
- 不恰当的权限可能的导致的问题(optional)
- IDEA&dump
- 使用GUI方案
- navicate
- 其他GUI方案
- 批量导入excel 文件
mysql_数据库(或指定表)的备份和到导入的若干方案/数据的导入(Navicat:excel的批量导入到某一张表)
references
- command line - How to run SQL script in MySQL? - Stack Overflow
- How to Export a MySQL Database?
- How to Rename a Database in MySQL | Tutorial by Chartio
mysqldump文档:
- MySQL :: MySQL 8.0 Reference Manual :: 4.5.4 mysqldump — A Database Backup Program
重命名数据库
- 较新版本的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
- 简单
- 导出形式多样直观
- 但是导入的时候需要考虑表间依赖关系,较为繁琐
其他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程序合并