mysql数据库迁移如mongo数据库步骤

备份MySQL

1
2
root@db:/# mysqldump -uroot -p -d campus>campus.sql  
#密码 Passwrd

备份Mongo

1
2
root@mongo:~# mongodump -d user -o user
root@mongo:~# mongodump -d store -o store

将MySQL备份成Mongo格式,使用python脚本来实现,脚本如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import pymysql,os
import pandas as pd
from sqlalchemy import create_engine

host='192.168.100.100'
port=3306
user='root'
password='123qwe'
database='data'
#存放导出的数据的路径
BASE_DIR="D:\\mygit\\old\\"

#定义连接数据库的引擎
dbconn=pymysql.connect(
host=host,
port=port,
user=user,
password=password,
database=database,
charset='utf8',
cursorclass=pymysql.cursors.DictCursor
)

table_list=[]
#查询数据库中的表的sql语句
tab_sql="show tables;"
#获取查询数据库游标
cursor=dbconn.cursor()
#执行查询所有表
cursor.execute(tab_sql)
#获取查询的结果,结果是一系列字典组成的字典
res=cursor.fetchall()
#使用循环,将具体的表名从结果中取出来存入存放到一个列表中
for i in range(len(res)):
table_list.append(res[i]['Tables_in_%s'%database])
# print(table_list)
cursor.close()
dbconn.close()


import csv
for t in table_list:
print(("%s表中数据"%t).center(50,"*"))
#为每一个表新建一个文件,保存输出的结果
path=BASE_DIR+t
fp=open(path,'w',encoding="utf-8")
conn=pymysql.connect(
host=host,
port=port,
user=user,
password=password,
database=database,
charset='utf8',
cursorclass=pymysql.cursors.DictCursor
)

cursor=conn.cursor()
print(cursor)
sql="select * from %s"%t
print(sql)
cursor.execute(sql)
res =cursor.fetchall()
for var in res:
fileds=var.keys()
fp.write(str(var))
fp.close()

将导出的文件导入Mongo

1
2
3
4
5
6
7
8
9
#!/bin/bash
BASE_PATH="/root/old"

for var in `ls $BASE_PATH` :
do
echo $var
#mongoimport -uadmin -pPassw0rd -d old -c $var $BASE_PATH/$var
mongoimport -d old -c $var $BASE_PATH/$var
done

将MySQL导出为csv格式

1
mysql -uusername -ppassword -h 172.16.81.236 –D my_db  --default-character-set=gbk  -e 'select * from server_warning_unrepaired'  | sed 's/\t/","/g;s/^/"/;s/$/"/;s/\n//g' > /tmp/file.csv

将csv到如到mongo

1
mongoimport --db network1 --collection networkmanagement --type csv --headerline --ignoreBlanks --file /home/erik/Documents/networkmanagement-1.csv
坚持原创技术分享,您的支持将鼓励我继续创作!