我在singlestore数据库中有一组现有的表,其中许多是列存储表。
我想构建一个python脚本,将我的开发表迁移到生产表。dev表已经构建、分析并与现有表进行比较,但我想要一种健壮的python方式来执行此操作,而不是硬编码sql脚本以用dev替换现有的prod表。
以下是我迄今为止的代码:
import sqlalchemy
import datalake_toolset as tls # customized module for personal use
# connect to database and obtain metadata
engine = tls.create_lake_engine() # just creates my engine for my database
conn = engine.connect()
metadata = sqlalchemy.MetaData(conn)
metadata.reflect()
# identify the tables and isolate to interested tables only
tables = metadata.tables
tablenames = [x.name for x in tables.values()
if x.name.startswith('NamesOfInterest')]
# start with an example table and see if we can create a prod
table = [x for x in tablenames if 'SomeExampleString' in x][0]
# obtain the metadata for the new prod table
table_meta = tables.get(table)
# change table metadata name
table_meta.name = table_meta.name.replace('_Dev_', '_Prod_')
# now go create the prod table
这就是我陷入困境的地方。。。如何创建新的Prod表,该表具有与Dev表相同的结构和数据类型,,同时保留列存储功能(其中一些数据集将有数百万条记录,对于如此大的表,我对默认行存储有业务限制(。
我对sqlalchemy了解不多,但您可以使用CREATE TABLE LIKE
创建一个与现有表具有相同模式的新表。类似的东西
CREATE TABLE t_prod LIKE t_dev;
如果t_dev是列存储表,那么t_prod也将是(它们的show create table
输出将相同(