您好我是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)
答案 0 :(得分:1)
不同的方法呢?而不是在快速加载中解决这个问题,而是将数据加载到临时表,如DATABASENAME.CITIES_TMP,其结构如下所示
City | zip_code | country | column4
xyz | 12 | Esp |
NULL | abc | 12 | Por
在下一步中,使用结构
创建目标表DATABASENAME.CITYCity | 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过程。