将PostgreSQL数据库中的数据复制到MySQL

psql2mysql的Python项目详细描述


#description
`psql2mysql`提供了一些工具,用于将数据从postgresql迁移到
mariadb。该工具的主要目标是将
an[openstack]部署(https://www.openstack.org)的数据库从postgresql迁移到
mariadb。但它也应该适用于其他数据库。

该工具本身基于sqlalchemy,它是内置的类型抽象,可以处理两个数据库之间的一些差异。

目前它专注于从postgresql迁移到mariadb。其他类似于
的mysql数据库还没有经过测试。也没有实现
迁移(mariadb到postgresql)的相反方向。但是,这两个特性都应该易于添加。


venv/bin/activate
pip install-r requirements.txt
python setup.py install
````

``先决条件
*在使用“psql2mysql”进行迁移之前,目标数据库和所有的
表都已经存在。如果目标< BR/>和目的数据库兼容,则BR/**‘PSQL2MySQL’当前不做任何检查。在迁移
openstack数据库的情况下,假设在运行“psql2mysql”之前已经调用了openstack服务的相应数据库同步工具(例如
“keystone manage db_sync”)。
*为源数据库提供的标识需要有足够的
权限来读取指定的数据库。
*除写访问外,为目标数据库提供的标识需要在迁移期间临时禁用约束和外键的特权。


在源数据库的表上。目前
只搜索所有文本列中与mariadb的“utf8”编码不兼容的字符。打印出包含不兼容字符串的行(和受影响的列)


*`migrate`

运行acutal迁移。将遍历数据库表
,并将所有行迁移到目标数据库。

*`purge tables`

清除目标数据库中的所有表。具有与
alembic和sqlalchemy migrate相关名称的表将被跳过并且不会被清除。此子命令
可以在迁移尝试失败后选择性执行。在开始从源数据库复制任何数据之前,`migrate`
子命令还将以相同的方式清除目标数据库中的所有表。但是,由于
该操作可能需要花费大量时间,因此在“migrate”之前单独运行“purge tables”子命令以减少源数据库的总体停机时间可能是有意义的。


数据库,排除软删除的
行。默认设置为true。

*`batch`


在一次运行“psql2mysql”时处理更多数据库。此选项的参数
是指向yml文件的路径,该文件列出了一组数据库及其源和目标连接字符串。YML文件的格式是:

```
database1:
source:database1的source uri
target:database1的target uri
database2:
source:database2的source uri

````

*`chunk size`

一次
的行数。默认大小为“10000”。此选项可更改块大小。

g和迁移将
一次性迁移整个表。请注意,这将使用更多的RAM。

预检查```


执行实际迁移:
```
psql2mysql\
--源postgresql://neutron:secret@192.168.1.1/neutron\
--目标mysql+pymysql://neutron:evenmoresecret@192.168.1.2/neutron?charset=utf8\
migrate
```

>要迁移批处理文件中的所有数据库:

```psql2mysql--batch databases.yml migrate```


testing
`psql2mysql`提供了一个测试套件。要运行测试,请使用:

`` noestests``





欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java以编程方式最小化JInternalFrame?   java使用JsonPath将不均匀列表提取为类型化对象   spring如何将java/resources文件获取到InputStream?   Java逻辑错误并不总是存在   java Firebase,更新特定字段   Java stream groupby并同时加入以进行csv导出   java安卓:如果出现任何声音,监听器将录制声音   java如何从多个文件中轮询最后修改的文件并发送到apache camel中的目标端点?   java是否返回多个比较器?   JavaBean IO:Date MMM在CAPS中不解析   当JButton从另一个类单击时,java正在更新JLabel   基类中子类的Java泛型初始化   jakarta ee Java ee制作一个以毫秒为间隔的计时器来发送数据包   json Windows Azure日期格式转换为Java日期