我有一个主表(employee),它有10列,我可以使用 load data inpath /file1.txt into table Employee
我的问题是,如果文件file2.txt有相同的列,但缺少第3列和第5列,如何处理相同的表(employee)。如果我直接加载数据,最后一列将是
NULL NULL
. 但它应该将第3列加载为null,将第5列加载为null。
假设我有一个表雇员,我想加载 file1.txt
以及 file2.txt
到table上去。
file1.txt
==========
id name sal deptid state coutry
1 aaa 1000 01 TS india
2 bbb 2000 02 AP india
3 ccc 3000 03 BGL india
file2.txt
id name deptid country
1 second 001 US
2 third 002 ENG
3 forth 003 AUS
在 file2.txt
我们缺少两列,即。 sal
以及 state
.
我们需要使用同一个employee表如何处理它?
2条答案
按热度按时间brtdzjyr1#
似乎没有办法直接加载到指定的列中。
因此,您可能需要这样做:
将数据inpath加载到与文件匹配的(临时?)表中
通过选择上一个表的内容插入到最终表的相关列中。
这种情况非常类似于这个问题,它涵盖了相反的场景(您只想加载几个列)。
dvtswwa32#
我不知道有什么方法可以创建一个由具有非同质结构的数据文件支持的表。但是,您可以为不同的列配置定义单独的表,然后定义一个同时查询这两个列的视图。
我想我举个例子比较容易。我将使用两张人名表,两张人名表都有一列,但其中一张表也存储身高,而另一张表则存储体重:
或者更接近您的问题的例子是,假设一个表有名称、高度和重量,而另一个表只有名称和重量,因此高度“从中间缺失”:
一定要使用
union all
不仅仅是union
,因为后者试图删除重复的行,这使得它非常昂贵。