MySql语法(3)—将旧表数据迁移到新表中

  1. 若新表存在
SELECT * INTO new_tablename FROM old_tablename
  1. 若新表不存在
 CREATE TABLE new_tablename AS SELECT * FROM old_tablename

注意点:
对于Oracle数据库来说,可以使用insert /*+APPEND*/语法增加插入速度。详情请见—insert /*+append*/的含义。使用append选项后,insert数据会直接在表最后插入数据,而不会在表的空闲块插入数据。一般用于大数据的插入。

对于Mysql数据库来说,将旧表数据迁移到新表时,可能会对数据进行处理,比如生成主键,值进行转换或者生成时间戳。那么如何使用mysql的语法呢?

mysql函数语法:

SELECT
    (SELECT UUID_SHORT()) Id,  # 生成UUID作为主键
        IF (   # 相当于Oracle的decode()函数
            SCHED_NAME = 'clusteredScheduler',
            '1',
            '2'
    ) type,
    NOW()   # 将当前时间作为时间戳
FROM
    new_locks
mysql函数.png

SELECT * INTO FROM 语法:

INSERT INTO yy_open_order (
    order_id,
    order_id,
) SELECT
    a.order_id,
  (SELECT UUID_SHORT()),
FROM
    yy_order a,yy_user u 
where a.order_id=u.order_id and a.user_id=u.user_id

历史文章

mybatis&&数据库优化&&缓存目录
JAVA && Spring && SpringBoot2.x 目录

你可能感兴趣的:(MySql语法(3)—将旧表数据迁移到新表中)