快速加载中的列操作

时间:2017-05-19 07:13:08

标签: sql pattern-matching teradata flat-file

您好我是teradata的新手。我正在使用快速加载将平面文件加载到我的TD DB中。 我的数据集(CSV FILE)包含一些问题,例如city列中的某些行包含正确的数据,但某些行包含NULL。包含NULL的city列的值存储在下一列中,即邮政编码,依此类推。最后,由于行中的额外NULL,一些行包含额外的列。实例如下。如何解决fastload中的这类问题?有人可以用SQL示例回答这个问题吗?

 City    Zipcode                 country    
 xyz     12                       Esp
 abc     11                       Ger
 Null    def(city's data)         12(zipcode's data)         Por(country's data)  

1 个答案:

答案 0 :(得分:1)

不同的方法呢?而不是在快速加载中解决这个问题,而是将数据加载到临时表,如DATABASENAME.CITIES_TMP,其结构如下所示

City | zip_code | country | column4
xyz  | 12       | Esp     | 
NULL | abc      | 12      | Por

在下一步中,使用结构

创建目标表DATABASENAME.CITY
City | zip_code | country |

作为最后一步,您需要运行2个INSERT查询:

INSERT INTO DATABASENAME.CITY (City, zip_code, country)
SELECT City, zip_code, country FROM DATABASENAME.CITIES_TMP
WHERE CITY not like 'NULL'/* WHERE CITY is not null - depends if null is a text value or just empty cell*/;

INSERT INTO DATABASENAME.CITY (City, zip_code, country)
SELECT Zip_code, country, column4 FROM DATABASENAME.CITIES_TMP
WHERE CITY like 'NULL' /* WHERE CITY is null - depends if null is a text value or just empty cell*/

当然,如果您的所有数据看起来都像您提供的样本一样,那么这将有效。 这也适用于偶尔需要执行此操作的情况。如果你需要每天加载几次数据,这将是一个麻烦(不确定我是否在这个上下文中使用了正确的单词)然后你应该使用例如Talend工具构建某种ETL过程。