sql合并两张(多张)数据表

目录 / Content

背景

当要处理大量数据时,经常会碰到将相同类型的数据存在多张表中的情况,或者从别人(单位)拿到的数据也是放在多个文件中.比如滴滴"供需预测"竞赛给出了几个G的数据,其中打车订单数据放在了多个文件中.
目录类似这样:

└─data
        order_data_2016-01-01
        order_data_2016-01-02
        order_data_2016-01-03
        order_data_2016-01-04
        order_data_2016-01-05
        order_data_2016-01-06
        order_data_2016-01-07
        ... ...

每个文件的字段都是一样的,不同的只是按照天,将订单的数据表分成了若干独立的文件.
导入数据库(SQL Server)后,保存为了若干的表,查询的经常要写上好多表的名字,为了偷懒就需要把这些数据全部合并到一张表里.

需求

将字段相同的若干数据表合并为一张表

方法

查了一些资料,发现SQL提供一种MERGE的方法可以合并,不过以前没接触过,介绍一长串英文,也没心情折腾了.
后来找到了一种利用INSERT和SELECT相结合的方法.
具体代码如下:

INSERT [dbo].[traffic_data_training]
           ([district_hash]
           ,[tj_level1]
           ,[tj_level2]
           ,[tj_level3]
           ,[tj_level4]
           ,[tj_time])
     SELECT * FROM [dbo].[traffic_data_2016-01-01]
GO

如果更严谨点,可以在SELECT中再加一个WHERE语句判断下待插入的行和本数据表中已有数据不冲突.

参考

使用 INSERT 和 SELECT 子查询插入行


原创文章,转载请注明: 转载自张哲的博客

本文链接地址: sql合并两张(多张)数据表