快速加载中的列操作

columns manipulation in fast load

您好,我是 Teradata 的新手。我正在使用快速加载将平面文件加载到我的 TD 数据库中。 我的数据集(CSV 文件)包含一些问题,例如城市列中的某些行包含正确的数据,但某些行包含 NULL。包含 NULL 的城市列的值存储到下一列,即邮政编码等。由于行中有额外的 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)  

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

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

下一步创建目标 table 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 过程。