写一个python脚本,对比mysql库和hologres库里面相同表名的表的记录数是否一致,输出表记录数不一致的表名
时间: 2024-02-10 16:10:50 浏览: 161
下面是一个简单的 Python 脚本,用于比较 MySQL 数据库和 Hologres 数据库中相同表名的表的记录数,并输出记录数不一致的表名:
```python
import psycopg2
import mysql.connector
# Hologres 数据库连接参数
hologres_host = "your-hologres-host"
hologres_port = "your-hologres-port"
hologres_user = "your-hologres-username"
hologres_password = "your-hologres-password"
hologres_database = "your-hologres-database"
# MySQL 数据库连接参数
mysql_host = "your-mysql-host"
mysql_port = "your-mysql-port"
mysql_user = "your-mysql-username"
mysql_password = "your-mysql-password"
mysql_database = "your-mysql-database"
# 连接 Hologres 数据库
hologres_conn = psycopg2.connect(host=hologres_host, port=hologres_port, user=hologres_user, password=hologres_password, database=hologres_database)
hologres_cursor = hologres_conn.cursor()
# 连接 MySQL 数据库
mysql_conn = mysql.connector.connect(host=mysql_host, port=mysql_port, user=mysql_user, password=mysql_password, database=mysql_database)
mysql_cursor = mysql_conn.cursor()
# 查询 Hologres 数据库中所有表的记录数
hologres_cursor.execute("SELECT table_name, table_rows FROM information_schema.tables WHERE table_schema = 'public'")
hologres_tables = dict(hologres_cursor.fetchall())
# 查询 MySQL 数据库中所有表的记录数
mysql_cursor.execute("SELECT table_name, table_rows FROM information_schema.tables WHERE table_schema = '{}'".format(mysql_database))
mysql_tables = dict(mysql_cursor.fetchall())
# 比较两个字典中的表记录数是否一致
diff_tables = set(hologres_tables.keys()) ^ set(mysql_tables.keys())
for table in diff_tables:
if table in hologres_tables and table in mysql_tables:
if hologres_tables[table] != mysql_tables[table]:
print("表 {} 在 Hologres 和 MySQL 中的记录数不一致!Hologres 记录数为 {},MySQL 记录数为 {}".format(table, hologres_tables[table], mysql_tables[table]))
# 关闭数据库连接
hologres_cursor.close()
hologres_conn.close()
mysql_cursor.close()
mysql_conn.close()
```
注意需要安装 `psycopg2` 和 `mysql-connector-python` 两个 Python 库。此外,需要将脚本中的连接参数替换为你自己的数据库连接参数。
阅读全文