存储过程批量插入,添加字段

CREATE DEFINER=`root`@`%` PROCEDURE `batchInsert`(IN loop_times INT)
BEGIN  
     DECLARE var INT;   
     SET var = 0;  
     set @exeSql=concat("insert into cdb_dynamic (typeId,addTime,userId) VALUES (1,1470540371,1)");  
            
     WHILE var < loop_times DO  
           set @exeSql=concat(@exeSql,", (1,1470540371,1)");  
           SET var = var + 1;  
     END WHILE;  
     prepare stmt from @exeSql;  
     EXECUTE stmt;  
     deallocate prepare stmt;
     END;

 

CREATE DEFINER=`root`@`%` PROCEDURE `NewProcedure`()
BEGIN


DECLARE Done INT DEFAULT 0;

     DECLARE ShizuName VARCHAR(300);
     /* 声明游标 */
     DECLARE rs CURSOR FOR  select table_name as tn from information_schema.tables where table_schema='stats' and table_name like  'cdb_click%';
     /* 异常处理 */
      DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET Done = 1;

      /* 打开游标 */
      OPEN rs;

      /* 逐个取出当前记录LingQi字段的值,需要进行最大值的判断 */
       FETCH NEXT FROM rs INTO ShizuName;
      /* 遍历数据表 */
      REPEAT
            IF NOT Done THEN
                   -- insert into test (name) values  (ShizuName);
       
                   SET @STMT :=CONCAT("alter table `",ShizuName,"` add column addTime int(10) unsigned not null default 0;");   
       
                    PREPARE STMT FROM @STMT;   
                    EXECUTE STMT;   
                    
                    
                     SET @STMT :=CONCAT("alter table `",ShizuName,"` add column isDel tinyint(3) unsigned not null default 0;");   
       
                    PREPARE STMT FROM @STMT;   
                    EXECUTE STMT;   
                   
                  /*UPDATE socialrelation SET LingQi = LingQi + 60 WHERE NodeName = ShizuName;*/
            END IF;

       FETCH NEXT FROM rs INTO ShizuName;

      UNTIL Done END REPEAT;

      /* 关闭游标 */
      CLOSE rs;

END;

 

转载于:https://www.cnblogs.com/zenghansen/p/5976700.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MyBatis 是一个 Java 持久层框架,而 ClickHouse 是一个面向列存储的分布式数据库,支持高并发和快速的数据插入。如果你想要使用 MyBatis 将数据插入 ClickHouse 中,可以按照以下步骤进行操作: 1. 添加 ClickHouse 的依赖库到项目中。 这可以通过在 pom.xml 文件中添加以下依赖项来完成: ```xml <dependency> <groupId>ru.yandex.clickhouse</groupId> <artifactId>clickhouse-jdbc</artifactId> <version>0.2.4</version> </dependency> ``` 2. 在 MyBatis 的配置文件中添加 ClickHouse 的数据源信息。 这可以通过在 mybatis-config.xml 文件中添加以下数据源配置来完成: ```xml <dataSource type="com.zaxxer.hikari.HikariDataSource"> <property name="driverClassName" value="ru.yandex.clickhouse.ClickHouseDriver"/> <property name="jdbcUrl" value="jdbc:clickhouse://localhost:8123/default"/> <property name="username" value="username"/> <property name="password" value="password"/> </dataSource> ``` 3. 在 Mapper 接口中添加对 ClickHouse 的操作方法。 这可以通过在 Mapper 接口中添加相应的 SQL 语句来完成,例如: ```java @Insert("INSERT INTO table_name (column1, column2, column3) VALUES (#{value1}, #{value2}, #{value3})") void insertIntoClickHouse(@Param("value1") String value1, @Param("value2") int value2, @Param("value3") double value3); ``` 在这个例子中,我们使用了 @Insert 注解来定义一个插入语句,其中 column1、column2 和 column3 是 ClickHouse 数据库中的列名,#{value1}、#{value2} 和 #{value3} 则是 MyBatis 中使用的参数名。 通过这些步骤,你就可以使用 MyBatis 来批量插入数据到 ClickHouse 中了。当然,这只是一个简单的例子,具体的实现还需要根据实际情况进行调整。 ### 回答2: mybatis在批量插入ClickHouse时,可以使用以下语法。 1. 首先,在mybatis的Mapper接口中定义一个方法来执行批量插入操作,例如: ``` void batchInsert(List<Map<String, Object>> data); ``` 2. 在对应的Mapper.xml文件中,编写实际执行批量插入的SQL语句,例如: ``` <insert id="batchInsert" parameterType="java.util.List"> INSERT INTO table_name (column1, column2, column3) VALUES <foreach collection="list" item="item" index="index" separator=","> (#{item.column1}, #{item.column2}, #{item.column3}) </foreach> </insert> ``` 3. 在代码中调用批量插入方法,例如: ``` List<Map<String, Object>> data = new ArrayList<>(); // 构造插入数据 Map<String, Object> row1 = new HashMap<>(); row1.put("column1", value1); row1.put("column2", value2); row1.put("column3", value3); data.add(row1); Map<String, Object> row2 = new HashMap<>(); row2.put("column1", value4); row2.put("column2", value5); row2.put("column3", value6); data.add(row2); // 调用批量插入方法 mapper.batchInsert(data); ``` 以上代码中,`table_name`为要插入的ClickHouse表的名称,`column1`、`column2`、`column3`为要插入的表的列名,`value1`、`value2`、`value3`等为具体要插入的值。 通过以上步骤,可以使用mybatis实现ClickHouse的批量插入操作。 ### 回答3: 在MyBatis中,可以使用批量插入操作来提高数据插入的效率。而在ClickHouse中,它也提供了相应的语法来支持批量插入操作。 在MyBatis中,我们可以使用foreach标签来实现批量插入。首先,我们需要定义一个List类型的参数,用于存储待插入的数据。然后,在SQL语句中使用foreach标签来循环遍历待插入的数据,并生成插入语句。 例如,假设我们有一个表名为"table_name",它包含两个字段"col1"和"col2",我们要将一组数据批量插入到该表中。我们可以按照以下步骤进行操作: 1. 在Mapper接口中定义一个批量插入的方法,方法参数为List类型的数据集合。 ```java void batchInsert(List<YourEntity> dataList); ``` 2. 在对应的Mapper XML文件中编写批量插入的SQL语句,使用foreach标签循环遍历待插入的数据。 ```xml <insert id="batchInsert" parameterType="java.util.List"> INSERT INTO table_name (col1, col2) VALUES <foreach collection="list" item="item" separator=","> (#{item.col1}, #{item.col2}) </foreach> </insert> ``` 其中,list为方法参数名称,item为循环遍历中的每个元素,#{item.col1}和#{item.col2}为每个元素中对应的属性。 3. 调用批量插入方法,将数据集合作为参数传入。 ```java yourMapper.batchInsert(dataList); ``` 通过以上步骤,我们就可以使用MyBatis的批量插入语法来实现在ClickHouse中批量插入数据。注意,在进行批量插入操作时,需要注意数据的大小限制和性能提升的平衡,以避免出现插入失败或性能下降的情况。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值