精华内容
下载资源
问答
  • TP5创建动态数据表

    2019-10-05 02:24:39
    $sql = " CREATE TABLE IF NOT EXISTS `$table_name` ( ...) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='';"; Db::execute($sql); 转载于:https://www.cnblogs.com/ali1012/p/10637047.html
                $sql = " CREATE TABLE IF NOT EXISTS `$table_name` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
    `user_id` int (11) DEFAULT NULL COMMENT 'user_id',
    `url` VARCHAR (255) DEFAULT '' COMMENT '地址',
    `params` text (0) DEFAULT '' ,
    `response` text (0) DEFAULT '' ,
    `created_at` VARCHAR (45) NOT NULL COMMENT '时间',
    `type` VARCHAR (45) NOT NULL COMMENT '类型',
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='表';";
    Db::execute($sql);

    转载于:https://www.cnblogs.com/ali1012/p/10637047.html

    展开全文
  • Yii Active Record 动态数据表

    千次阅读 2014-06-04 20:11:06
    AR class:数据表AR class property:数据表的一列AR 实例:数据表的一条数据 所以对于常用的数据库操作(CRUD)可以转化成一种面向对象的数据操作形式。 实现一个AR类的的最简代码如下: class Post extends ...

    Active Record(AR)是一种流行的 对象-关系映射(ORM)技术,其映射关系为

    • AR class:数据表
    • AR class property:数据表的一列
    • AR 实例:数据表的一条数据

    所以对于常用的数据库操作(CRUD)可以转化成一种面向对象的数据操作形式。

    实现一个AR类的的最简代码如下:

    class Post extends CActiveRecord
    {
        public static function model($className=__CLASS__)
        {
            return parent::model($className);
        }
     
        public function tableName()
        {
            return 'tbl_post';
        }
    }


     只需重载数据表方法tableName,返回数据表名字即可。

    但是现在的问题是,如果数据表的名字不确定,是否可以在插入或者查询时动态的分配数据表的名字。例如,如果对业务中的log流水做查询的工作,我们知道,一般写log时都是每天一张表,例如tbl_log_20140601, tbl_log_20140602, ...。因此没有办法把每天定义成一个AR class。


    解决方法如下:

    /*
    * Usage:
    * $result = Log::model()->setDate("20140603")->findAll();
    */
    
    class Log extends CActiveRecord
    {
        private $_date;
         
        public static function model($className=__CLASS__)
        {
            return parent::model($className);
        }
        
        public function tableName()
        {
            return "tbl_log_". $this->getDate();
        }
        
        public function setDate($date){
            $this->_date = $date;
            $this->refreshMetaData();
            return $this;
        }
        
        public function getDate(){
            if($this->_date === NULL){
                $this->setDate("20140601");
            }
            return $this->_date;
        }
        
    }
    


    其使用方法为:

    $result = Log::model()->setDate("20140603")->findAll();

     在执行Log::model()时,Yii框架会初始化当前的instance,因此会立刻调用tableName(),并且形成一些中间数据(metaData),因此在setDate以后需要调用 refreshMetaData() 来刷新当前已经形成的中间数据。


    简要做个笔记,希望对大家有帮助。

    展开全文
  • 项目需要给不同的用户分不同的记录数据,因此需要使用分库分表的中间件进行多数据源查询,本项目使用beetlsql,因此需要手动创建。 为什么选择shardingsphere不选择mycat mycat无代码侵入性,但需要提前配置好...

    背景

    项目需要给不同的用户分不同的表记录数据,因此需要使用分库分表的中间件进行多数据源查询,本项目使用beetlsql,因此需要手动创建表。

    为什么选择shardingsphere不选择mycat

    mycat无代码侵入性,但需要提前配置好相关配置,与需求不符。

    具体使用

    pom配置

    <dependency>
        <groupId>io.shardingsphere</groupId>
        <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
        <version>3.0.0}</version>
    </dependency>
    

    使用shardingsphere3.0.0版本

    application.properties配置

    #可配置多数据源,本demo只使用单数据源
    #sharding.jdbc.datasource.names=ds0,ds1
    sharding.jdbc.datasource.names=ds
    sharding.jdbc.datasource.ds.type=com.alibaba.druid.pool.DruidDataSource
    sharding.jdbc.datasource.ds.driver-class-name=com.mysql.jdbc.Driver
    sharding.jdbc.datasource.ds.url=jdbc:mysql://localhost:3306/ds?useSSL=false&characterEncoding=utf-8
    sharding.jdbc.datasource.ds.username=root
    sharding.jdbc.datasource.ds.password=123456
    
    #下方是多数据源ds0配置,本demo不使用
    #sharding.jdbc.datasource.ds0.type=com.alibaba.druid.pool.DruidDataSource
    #sharding.jdbc.datasource.ds0.driver-class-name=com.mysql.jdbc.Driver
    #sharding.jdbc.datasource.ds0.url=jdbc:mysql://localhost:3306/ds0?useSSL=false&characterEncoding=utf-8
    #sharding.jdbc.datasource.ds0.username=root
    #sharding.jdbc.datasource.ds0.password=123456
    
    #下方是多数据源ds1配置,本demo不使用
    #sharding.jdbc.datasource.ds1.type=com.alibaba.druid.pool.DruidDataSource
    #sharding.jdbc.datasource.ds1.driver-class-name=com.mysql.jdbc.Driver
    #sharding.jdbc.datasource.ds1.url=jdbc:mysql://localhost:3306/ds1?useSSL=false&characterEncoding=utf-8
    #sharding.jdbc.datasource.ds1.username=root
    #sharding.jdbc.datasource.ds1.password=123456
    
    #sharding.jdbc.sharding.tables.order.actual-data-nodes=ds$->{0..1}.order$->{0..1}
    #sharding.jdbc.sharding.tables.order.actual-data-nodes=ds.order$->{0..1}
    sharding.jdbc.sharding.tables.order.dynamic=true
    sharding.jdbc.sharding.tables.order.table-strategy.standard.sharding-column=user_id
    sharding.jdbc.sharding.tables.order.table-strategy.standard.precise-algorithm-class-name=com.per.algorithm.ModuleSharingTableAlgorithm
    #sharding.jdbc.sharding.tables.order.table-strategy.standard.sharding-column=user_id
    #sharding.jdbc.sharding.tables.order.table-strategy.standard.precise-algorithm-class-name=com.per.algorithm.ModuleSharingTableAlgorithm
    #sharding.jdbc.sharding.tables.order.table-strategy.inline.sharding-column=user_id
    #sharding.jdbc.sharding.tables.order.table-strategy.inline.algorithm-expression=order$->{user_id % 2}
    sharding.jdbc.sharding.tables.order.key-generator-column-name=order_id
    #sharding.jdbc.sharding.tables.order.key-generator-type=SNOWFLAKE
    sharding.jdbc.sharding.tables.order.key-generator-class-name=io.shardingsphere.core.keygen.DefaultKeyGenerator
    #sharding.jdbc.sharding.tables.order_item.actual-data-nodes=ds$->{0..1}.order_item$->{0..1}
    sharding.jdbc.sharding.tables.order_item.actual-data-nodes=ds.order_item$->{0..1}
    sharding.jdbc.sharding.tables.order_item.table-strategy.inline.sharding-column=order_id
    sharding.jdbc.sharding.tables.order_item.table-strategy.inline.algorithm-expression=order_item$->{order_id % 2}
    sharding.jdbc.sharding.tables.order_item.key-generator.column=order_item_id
    sharding.jdbc.sharding.tables.order_item.key-generator.type=SNOWFLAKE
    sharding.jdbc.sharding.binding-tables=order,order_item
    sharding.jdbc.sharding.broadcast-tables=config
    
    #sharding.jdbc.sharding.default-database-strategy.inline.sharding-column=user_id
    #sharding.jdbc.sharding.default-database-strategy.inline.algorithm-expression=ds$->{user_id % 2}
    #该处配置默认数据源
    #sharding.jdbc.config.sharding.default-data-source-name=ds0
    
    #sharding.jdbc.config.sharding.default-database-strategy.standard.sharding-column=user_id
    #sharding.jdbc.config.sharding.default-database-strategy.standard.precise-algorithm-class-name=com.per.algorithm.ModuleSharingTableAlgorithm
    
    sharding.jdbc.config.sharding.default-table-strategy.standard.sharding-column=user_id
    sharding.jdbc.config.sharding.default-table-strategy.standard.precise-algorithm-class-name=com.per.algorithm.ModuleSharingTableAlgorithm
    
    
    sharding.jdbc.config.props.sql.show=true
    
    

    bean

    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    @EqualsAndHashCode(callSuper = false)
    public class Order implements Serializable {
        private static final long serialVersionUID = -21353099551913779L;
    
        @AutoID
        private Integer orderId;
    
        private Integer userId;
    
        private String name;
    }
    
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    @EqualsAndHashCode(callSuper = false)
    public class OrderItem implements Serializable {
        private static final long serialVersionUID = -21343099551913779L;
    
        @AutoID
        private Integer orderId;
    
        private String item;
    
        private Integer userId;
    }
    

    dao

    @Repository
    public interface OrderDao extends BaseMapper<Order> {
    }
    
    @Repository
    public interface OrderItemDao extends BaseMapper<OrderItem> {
    }
    

    service

    orderService:

    @Service
    @RequiredArgsConstructor(onConstructor_ = {@Autowired})
    @Slf4j
    public class OrderService {
        private final OrderDao orderDao;
    
        private final CreateTableUtil createTableUtil;
    
        public void addOrder(Integer userId, String name) {
            String tableName = "`order" + userId + "`";
            String sql = "create table IF NOT EXISTS " + tableName + " (\n" +
                    "  `order_id` bigint(20) NOT NULL AUTO_INCREMENT,\n" +
                    "  `user_id` bigint(20) NOT NULL,\n" +
                    "  `name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,\n" +
                    "  PRIMARY KEY (`order_id`) USING BTREE\n" +
                    ") ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;";
            try {
                createTableUtil.createTable(sql);
            } catch (SQLException e) {
                e.printStackTrace();
            }
            Order order = Order.builder()
                    .userId(userId)
                    .name(name)
                    .build();
            orderDao.insertTemplate(order);
        }
    
        public Order getOrder(Integer orderId, Integer userId) {
            return orderDao.createLambdaQuery()
                    .andEq(Order::getOrderId, orderId)
                    .andEq(Order::getUserId, userId)
                    .single();
        }
    

    建表的工具类

    @Component
    @RequiredArgsConstructor(onConstructor_ = {@Autowired})
    @Slf4j
    public class CreateTableUtil {
    
        private final DataSource dataSource;
    
        public void createTable(String sql) throws SQLException {
            Connection connection = dataSource.getConnection();
            Statement statement = connection.createStatement();
            statement.executeUpdate(sql);
            statement.close();
            connection.close();
        }
    }
    

    算法

    需要实现相应的算法接口

    public class ModuleSharingTableAlgorithm implements PreciseShardingAlgorithm<Integer> {
    
        public ModuleSharingTableAlgorithm() {
    
        }
    
        @Override
        public String doSharding(Collection<String> collection, PreciseShardingValue<Integer> preciseShardingValue) {
            System.out.println("进入分片算法");
            for (String a : collection) {
            	//该处可以查询到具体的数据源或表名
                System.out.println(a);
            }
            //该方法可以查询到配置的列名
            System.out.println("column = " + preciseShardingValue.getColumnName());
            //该方法可以查询到逻辑表名
            System.out.println("table = " + preciseShardingValue.getLogicTableName());
            //该方法可以查询到列的数据
            System.out.println("value = " + preciseShardingValue.getValue());
            for (String each : collection) {
            	//该处根据userId决定要进入的分表,然后返回表名
                return each + preciseShardingValue.getValue();
            }
            throw new UnsupportedOperationException();
        }
    }
    

    结语

    该demo只是验证技术可行性,确定了可以通过动态创建表的方式进行分表,正式使用时需要进行对应的封装以及配置的修改,可引入配置中心进行配置管理等。

    展开全文
  • 一、创建所需数据 CREATE TABLE "TEST" ( "ID" NUMBER NOT NULL ENABLE, "NAME" VARCHAR2(50 BYTE) NOT NULL ENABLE, "AGE" NUMBER NOT NULL ENABLE, "DEPT" VARCHAR2(50 BYTE) NOT NULL ENABLE,

    一、创建所需数据

    CREATE TABLE "TEST"
      (
        "ID"   NUMBER NOT NULL ENABLE,
        "NAME" VARCHAR2(50 BYTE) NOT NULL ENABLE,
        "AGE"  NUMBER NOT NULL ENABLE,
        "DEPT" VARCHAR2(50 BYTE) NOT NULL ENABLE,
        CONSTRAINT "TEST_PK" PRIMARY KEY ("ID") ENABLE
      )
    


     

    要导入到数据库中的XML文件

    <?xml version="1.0" encoding="UTF-8" ?>
    <list>
      <persons>
        <id>001</id>
        <name>张三</name>
        <age>34</age>
        <dept>销售部</dept>
      </persons>
      <persons>
        <id>002</id>
        <name>李四</name>
        <age>25</age>
        <dept>销售部</dept>
      </persons>
      <persons>
        <id>003</id>
        <name>小明</name>
        <age>30</age>
        <dept>销售部</dept>
      </persons>
    </list>

    二、新建fusion web application-->ImpXML

     

    基于test表建立VO对象 由于我们这里是要导入数据到表中,所以这个VO对象初始应该是没有数据的,因此需要在query中设置

    where 1==0 查询条件,使初始行集为空。如下图:

     

    三、新建jspx页-->test.jspx

    拖动Input File、Panel Collection控件到页面上,拖动TestView1数据控件到Panel Collection控件里面。现在你的

    test.jspx看起来应该是这样

     

    四、编写后台bean响应Inpu File控件的ValueChangeListener

    这个bean主要由两个函数组成。

    public void getFile(ValueChangeEvent valueChangeEvent)

    这个函数通过调用第二个函数

    private void parseFile(InputStream file)

    对xml文件进行解析后,对TestView1中的行集进行赋值。

    这两个函数需要注意以下几点:

    1、IOUtils.copy(file.getInputStream(), writer, "UTF-8")
    这句要注意后面的编码方式要与XML文件的编码方式相对应,否则,解析出来的有可能是乱码。

     

    2、JXDocumentBuilderFactory factory =
                    (JXDocumentBuilderFactory)JXDocumentBuilderFactory.newInstance

    ("oracle.xml.jaxp.JXDocumentBuilderFactory",   ClassLoader.getSystemClassLoader());                                                               

    由于我们主要利用oracle.xml.parser.v2、oracle.xml.jaxp两个库对XML文件进行解析,在这一步建立XML factory的时候,

    由于在weblogic lib中也有这样的方法,为了避免冲突,可以采用全限定名称oracle.xml.jaxp.JXDocumentBuilderFactory,

    或在weblogic.xml文件中指定库调用优先级的方式限定使用oracle库。这里采用的第一种方式。

     

    3、赋值的时候要注意列名的大小写

    五、设置控件属性

    设置table控件的PartialTriggers为InputFile控件,Input File控件AutoSubmit属性为true

    运行test.jspx,当我们选定xml文件后,它应该自动出现在下面的表里。如下图:

     

    示例源代码下载

    ImpXML.zip


     

    展开全文
  • #vue使用el-table,实现动态数据表、并滚动展示 ###tableLabel表头数据,支持条数、宽度设置 ###tableData存放所有数据, ###showList存放用于展示的数据, ###使用setInterval定时更新showList(删除第一条,末尾...
  • EXCEL动态数据透视

    2019-06-06 13:43:04
    下面就给大家讲解利用excel做动态数据透视。 原始数据源: 第一步:先做数据透视 数据透视的数据是到六月份 第二步:插入——表格——创建确定 第三步:公式——名称管理器——编辑名称改为表格...
  • 如下图,两个的表头和数据一一对应,都为动态生成; 完成功能思想:1.找出数据中的存在的最长表头,即所有数据都为表头的子集表头 2.渲染数据时候,根据表头的字段进行帅选要显示的数据(用循环判断实现) 后端...
  • vue+element开发的表格,表头是不确定的,根据接口动态渲染,表数据也是根据动态的表头动态展示的 (如果动态表头不熟悉怎么操作,查看我的另外一篇文章) element 中的table表头动态渲染 <el-table-column v-for...
  • 前面已经说了一个动态的根据当前时间创建和插入数据的示例,那么如何进行动态的查询呢?   我写了这样一个公共方法,仅供参考!   这里需要传递两个时间间隔参数,根据时间间隔判断相差的月数,然后从起始...
  • oracle 动态查询分区数据 需求说明 :将查询的分区数据插入到现有中 declare v_sql varchar2(100) := ‘’; --定义空sql begin select TO_CHAR(SYSDATE - 1, 'YYYYMMDD') into v_sql from dual; --给字符串sql...
  • 在项目中利用layui数据表格的时候遇见几次需要动态渲染表头的情况,查了些资料,总结了一下,总体都是讲数据表格渲染列的cols:[]这部分代码拿出来进行操作。 当需要对页面中表格进行切换时,对于不同表头需要根据一...
  • UE4动态加载数据表

    千次阅读 2018-09-28 14:36:59
    创建一个数据表 需要改成UTF-8编码 2.创建一个Actor .h UFUNCTION(BlueprintCallable, Category = "MySocket") TMap<int, FString> GetCsvContents(FString csvPath, int LieNum); .cpp #include ...
  • mapper接口:如下图包含表明,及添加的数据 xml文件:这里的SQL又添加临时表数据
  • 数据结构——树的查找(动态查找)】 目录【数据结构——树的查找(动态查找)】动态查找(基于树的查找法)(一)二叉排序树1、定义2、查找算法3、插入算法4、创建算法5、删除算法(二)平衡二叉树1、...
  • 通过easyui动态的定义表头数据(从数据库拼接起来的),数据也是拼接,如何实现呢
  • 工作需要,在Mybatis中动态创建数据表 <![CDATA[ CREATE TABLE ${tableName} ( id INT PRIMARY KEY AUTO_INCREMENT, project_id VARCHAR(20) NOT NULL, data VARCHAR(255), serial_number VARCHAR...
  • ElementUI表格动态设置表头label数据

    千次阅读 2020-09-05 11:41:37
    业务需求:需要使用Element组件库做一个table表头动态改变的数据table 文章目录分析问题解决问题结果展示 分析问题 我们使用Element的table,常用的方式是通过绑定需要的表格data数据数据格式为对象数组。这时,...
  • 动态生成数据表

    2008-05-05 10:49:00
    今天同事让我修改他以前写的动弹生成以及字段的存储过程,因为以前只有3中选项类型,现在7种类型,所以要重新生成答案。所以这个小任务就落在我身上了。。呵呵。 其实问题也简单了。因为他以前已经写了我只要加...
  • 动态数据结构——动态链表(malloc函数的使用)

    千次阅读 多人点赞 2018-02-26 21:30:51
    即我们需要一个个地去开辟新节点,并且去输入节点的数据信息,然后建立起前后相连的关系。 下面我们开始尝试建立起一个动态链表: 1.结构体部分: struct weapon{ int price; int atk; struct weapon * next;...
  • 数据结构动态分配 实现一些基本的功能:查找数据(按值和按位)、删除数据(通常按位)、插入元素(按位)、输出的长度以及打印。 1>定义结构体 定义数据时尽量有很高的可读性 对于引用符号&的...
  • 如果只是实现element的table表格数据可编辑请到:https://blog.csdn.net/zeng092210/article/details/91385673 ...3.去判断显示那个数据表 4.实现双击的时候在可编辑 // 双击修改 弹出input tableDbEdit(...
  • JDBC 动态创建数据表 及 SQL预处理

    千次阅读 2015-03-05 08:25:51
    这两天由于公司的需求,客户需要自定义数据表的字段,导致每张表的字段都不是固定的而且很难有一个通用的模板去维护,所以就使用JDBC动态去创建数据表,然后通过表的字段动态添加数据,数据的来源主要是用户提供的...
  • 1、在向动态表中插入数据后,要返回主键id,需要建实体类。(若是不需要返回主键,则不需要建实体类) package com.lyf.entity public class InsertMao{ //主建 private int id; //表名 private String ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,150
精华内容 10,460
关键字:

动态数据表