一个表中数据插入到另一个表中

本文介绍了两种不同的SQL插入操作:一种是在表结构相同的情况下跳过重复记录的插入操作;另一种则是不跳过重复记录的情况。通过具体的SQL语句示例,读者可以了解到如何根据不同需求选择合适的插入方式。

1、表结构相同   跳过重复

INSERT ignore INTO scc_batchd(number,bid) SELECT number,2 from scc_batch2

2、表结构相同   不跳过重复

INSERT INTO scc_batchd(number,bid) SELECT number,2 from scc_batch2


Hive使用INSERT语句将一个数据插入一个有以下几种常见情况: 1. **简单插入**:直接从一个查询数据插入一个,示例代码如下: ```sql INSERT INTO TABLE target_table SELECT * FROM source_table; ``` 这种方式会将`source_table`中的所有数据插入到`target_table`中。 2. **指定字段插入**:当只需要插入部分字段时,可以指定字段名,示例代码如下: ```sql INSERT INTO TABLE target_table (column1, column2) SELECT column1, column2 FROM source_table; ``` 此方法仅将`source_table`中的`column1`和`column2`字段的数据插入到`target_table`对应的字段中。 3. **插入到分区**:如果目标是分区,需要明确指定分区,示例代码如下: ```sql INSERT INTO TABLE target_table PARTITION (partition_column = 'partition_value') SELECT * FROM source_table; ``` 如果插入数据到有分区的Hive时不明显指定分区会抛出异常,如`insert overwrite table persons_tmp select * from persons;`会抛出`FAILED: SemanticException 1:23 Need to specify partition columns because the destination table is partitioned. Error encountered near token 'persons_tmp'` [^4]。 4. **覆盖插入**:使用`INSERT OVERWRITE`可以覆盖目标中已有的数据,示例代码如下: ```sql INSERT OVERWRITE TABLE target_table SELECT * FROM source_table; ``` 5. **CTAS(Create Table As Select)**:在实际情况中,若将Hive的查询输出结果直接存到一个新的中,可使用CTAS,示例代码如下: ```sql CREATE TABLE new_table AS SELECT * FROM source_table; ``` 这里虽然使用的不是`INSERT`语句,但也是一种将一个数据插入到新的方式 [^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值