使用MySql存过批量建表

DELIMITER $$
CREATE PROCEDURE `create_xf_xfj_trade_records_Tables` (pram_year varchar(4))
BEGIN
	DECLARE	i INT ;
	DECLARE table_name VARCHAR(27);
	SET i = 1 ;
	WHILE i <= 12 DO
		IF i<10 THEN
		SET table_name = CONCAT('trade_records_',pram_year,'0',i);
		ELSE
		SET table_name = CONCAT('trade_records_',pram_year,i);
		END IF;

	SET @qqq = CONCAT(
		'CREATE TABLE IF NOT EXISTS ',table_name,'(
				id char(32) DEFAULT NULL,
				user_id int(8) NOT NULL COMMENT "用户ID",
				card_number char(20) DEFAULT NULL COMMENT "卡号",
				dev_id int(8) NOT NULL COMMENT "消费记录时为消费机id,充值记录时(卡尔充值机充值时,为充值操作人id)(卡尔空中充值方式,固定值-1)(能龙对接的充值记录,固定值-2)(翼支付充值记录,固定值-3)(第三方平台 用户Id-暂定)",
				service_id int(4) NOT NULL COMMENT "1004消费充值,1005刷卡消费,1012余额转出,1013余额转入,1014消费退款,1018消费补款,1019消费平账,1020月包餐,1021学校收费,1022按次消费",
				rec_time datetime NOT NULL COMMENT "刷卡时间",
				checkstat tinyint(1) DEFAULT "0" COMMENT "消费状态:0=消费记录,1=正常消费,2=非正常消费,3=充值(卡尔充值机充值时取值0,卡尔空中充值、能龙对接方式取值3,才能在手机上显示),4确定未扣费.5异常记录,6记录缺失,7圈存充值未到卡,8()。",
				money decimal(9,2) NOT NULL DEFAULT "0.00" COMMENT "原有金额",
				consumption decimal(9,2) NOT NULL COMMENT "消费金额(合计)",
				over decimal(9,2) NOT NULL COMMENT "消费后余额",
				surplus_money decimal(9,2) DEFAULT "0.00" COMMENT "充值或消费后平台余额",
				from_tag tinyint(2) DEFAULT NULL COMMENT "来源 1=卡尔充值机,2=卡尔无卡充值,3=卡尔空中充值,4=能龙平台,5=翼支付 6卡尔批量充值 7第三方平台",
				way_tag tinyint(2) DEFAULT NULL COMMENT "方式1=微信,2=支付宝,3=网银,4=现金充值,5=翼支付充值",
				order_code char(32) DEFAULT NULL COMMENT "订单Id",
				add_time datetime NOT NULL COMMENT "创建时间",
				serial_number int(8) DEFAULT NULL COMMENT "消费机自带流水号",
				canbie_id tinyint(2) DEFAULT NULL COMMENT "餐别",
				KEY `idx_rec_time` (`rec_time`) USING BTREE,
				KEY `idx_user_id` (`user_id`) USING BTREE,
				KEY `idx_dev_id` (`dev_id`) USING BTREE
			) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT="消费机交易记录表";'
	) ; PREPARE create_stmt
	FROM
		@qqq ; EXECUTE create_stmt ;
	SET i = i + 1 ;
	END
	WHILE ;
	END $$
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用以下步骤将MySQL表转换为Hive表并生成建表语句: 1. 在MySQL中运行SHOW CREATE TABLE语句,以获取MySQL表的建表语句。 2. 将建表语句中的引擎和字符集替换为Hive支持的引擎和字符集。 3. 将建表语句中的数据类型替换为Hive支持的数据类型。 4. 将建表语句中的AUTO_INCREMENT删除,因为Hive不支持自增长。 5. 将建表语句中的主键和索引删除,因为Hive不支持主键和索引。 6. 将建表语句中的分隔符替换为Hive支持的分隔符。 7. 生成Hive建表语句并保存到文件中。 下面是一个示例Python脚本,可以将MySQL表转换为Hive表并生成建表语句: ```python import re def convert_mysql_to_hive(mysql_create_table): # Replace engine and character set hive_create_table = mysql_create_table.replace('ENGINE=InnoDB', '') hive_create_table = hive_create_table.replace('DEFAULT CHARSET=utf8', 'ROW FORMAT DELIMITED FIELDS TERMINATED BY \',\'') # Replace data types hive_create_table = re.sub(r'int\(\d+\)', 'int', hive_create_table) hive_create_table = re.sub(r'varchar\(\d+\)', 'string', hive_create_table) hive_create_table = re.sub(r'text', 'string', hive_create_table) hive_create_table = re.sub(r'datetime', 'timestamp', hive_create_table) # Remove auto increment hive_create_table = re.sub(r'AUTO_INCREMENT=\d+ ', '', hive_create_table) # Remove primary key and indexes hive_create_table = re.sub(r',\n\s+PRIMARY KEY \(.+?\)', '', hive_create_table) hive_create_table = re.sub(r',\n\s+KEY .+? \(.+?\)', '', hive_create_table) # Replace delimiter hive_create_table = hive_create_table.replace(';', '\n') return hive_create_table # Example usage mysql_create_table = "SHOW CREATE TABLE mytable" hive_create_table = convert_mysql_to_hive(mysql_create_table) with open('hive_create_table.sql', 'w') as f: f.write(hive_create_table) ``` 你需要将`mysql_create_table`替换为你的MySQL建表语句,并将生成的Hive建表语句保存到`hive_create_table.sql`文件中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值