批量建表的存储过程

CREATE DEFINER=`root`@`%` PROCEDURE `create_table`()
BEGIN
DECLARE `@i` int(11);
DECLARE `@sqlstr` varchar(2560);
DECLARE `maxi` int(11);
DECLARE `@tab` int(20);

SET `@i`=0;

SET `maxi` =TIMESTAMPDIFF(day,'2016-7-10',(DATE_add('2016-7-10',INTERVAL 1 month)));

WHILE `@i` < `maxi` DO
SET `@tab`=date_format(DATE_ADD('2016-7-10',interval -day('2016-7-10')+1 day),'%Y%m%d')+`@i`;
SET @sqlstr = CONCAT(

"CREATE TABLE data_live_log_",
`@tab`,

"(
`pid` BIGINT(20) NOT NULL AUTO_INCREMENT,
`app_id` VARCHAR(40) COMMENT '接入用户板块ID',
`data_id` VARCHAR(40) NOT NULL COMMENT '数据ID',
`rs_code` VARCHAR(2) COMMENT '敏感词过滤处理结果状态(汇总后状态)',
`anchor_id` VARCHAR(40) COMMENT '主播ID',
`live_id` VARCHAR(40) COMMENT '直播房间ID',
`msg_time` TIMESTAMP COMMENT '消息处理时间',
`ip_address` VARCHAR(40) COMMENT '发送消息客户端IP',
`manchine_code` VARCHAR(40) COMMENT '发送消息用户手机识别码 ',
`imei` VARCHAR(40) COMMENT '发送消息用户国际移动设备标识',
`user_id` VARCHAR(40) COMMENT '发送消息用户ID',
`message_type` INT(2) COMMENT '消息类型:0:用户消息 1:系统消息 2:发送礼物 3:图片 4:转发 5:关注 6:红包 7:私信',
`msg_content` VARCHAR(1000) COMMENT '原始消息内容',
`filter_words` VARCHAR(3000) COMMENT '所命中的敏感词',
`nick_name` VARCHAR(50) COMMENT '发送消息用户昵称',
`star_level` VARCHAR(20) COMMENT '发送消息用户星级',
`platform_id` VARCHAR(20) COMMENT '接入平台ID',
`msg_hash` VARCHAR(100) COMMENT '消息摘要指纹',
`filter_mode` VARCHAR(200) COMMENT '过滤模式',
`risk_rating` INT(4) COMMENT '风险等级',
`content_cat` INT(4) COMMENT '情感分类',
`real_status` INT(4) COMMENT '敏感词过滤真实处理结果状态',
PRIMARY KEY (`pid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表' AUTO_INCREMENT=1 "
);
prepare stmt from @sqlstr;
execute stmt;

SET `@i` = `@i` + 1;
END WHILE;
END

转载于:https://www.cnblogs.com/yiguangchao9999/p/5582902.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
批量导出Oracle数据库中的建表语句,您可以按照以下步骤进行操作: 1. 首先,确保您具有足够的权限来导出表结构。您需要具有`CREATE ANY DIRECTORY`和`SELECT ANY TABLE`的权限。 2. 创建一个目录,用于存储导出的SQL文件。您可以使用`CREATE DIRECTORY`语句来创建目录。例如,您可以使用以下命令在C:\dba目录下创建一个目录: ```sql CREATE DIRECTORY export_directory AS 'C:\dba'; ``` 这将在C:\dba目录下创建一个名为`export_directory`的目录。 3. 编写一个脚本或使用PL/SQL程序来查询数据库中的表结构并将其导出为SQL文件。您可以使用`DBMS_METADATA.GET_DDL`函数来获取表的DDL语句,并将其写入到SQL文件中。以下是一个示例脚本: ```sql SET SERVEROUTPUT ON; DECLARE v_sql CLOB; v_file UTL_FILE.FILE_TYPE; BEGIN v_file := UTL_FILE.FOPEN('EXPORT_DIRECTORY', 'tables.sql', 'W'); FOR t IN (SELECT table_name FROM all_tables WHERE owner = 'YOUR_USER') LOOP v_sql := DBMS_METADATA.GET_DDL('TABLE', t.table_name, 'YOUR_USER'); UTL_FILE.PUT_LINE(v_file, v_sql); END LOOP; UTL_FILE.FCLOSE(v_file); END; / ``` 请注意,您需要将`YOUR_USER`替换为要导出表结构的用户的名称。 4. 运行脚本或执行PL/SQL程序。这将生成一个名为`tables.sql`的文件,其中包含所选用户下所有表的建表语句。 5. 最后,在C:\dba目录下查看导出的SQL文件,您将找到包含所有表结构的文件。 请注意,这只是一种方法来批量导出Oracle数据库中的建表语句。根据您的需求,您还可以使用其他方法,如使用数据泵工具(expdp)或第三方工具来实现相同的目标。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值