2017-05-19 14 views
0

こんにちは、私はteradataを初めて使っています。高速ロードを使用して私のTD DBにフラットファイルをロードしています。 私のデータセット(CSV FILE)には、city列の行の一部に適切なデータが含まれていて、行の一部にNULLが含まれているような問題があります。 NULLを含むcity列の値は、郵便番号などの次の列に格納されます。最後に、行の中には余分なNULLがあるため、行の一部に余分な列が含まれています。例を以下に示す。これらの問題を早急に解決するにはどうすればよいですか?誰かがSQLの例でこれに答えることができますか?高速ロードでのカラム操作

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

Teradataを初めてお使いの方は、Teradata Parallel Transporter(TPT)に精通していることをお勧めします。 Fastload、MLoad、およびFastExportは廃止予定です。 – xenodevil

+0

FastLoadを使用して修正することはできません。入力ファイル内のデータは実際どのように見えますか? – dnoeth

+0

問題のテーブルを編集しました。今私の質問がはっきりしていることを願う。システムが都市データをロードしようとするときはいつでも、都市列にNullなどが含まれていて、次の列からデータを取得するようなシステムが最初にスキャンする必要があるという論理があります。私はSQLでこのロジックを実装する方法を知らない –

答えて

1

どのようなアプローチが違うのですか。代わりに、高速負荷でこれを解決する、次のステップで

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

のような構造でDATABASENAME.CITIES_TMPのような一時テーブルにデータをロードするよう

City | zip_code | country | 

構造を持つターゲット表DATABASENAME.CITYを作成します最後のステップで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*/ 

もちろん、すべてのデータが指定したサンプルのように見える場合は、これが有効です。 これは、これをしばらくする必要がある場合にのみ機能します。 1日に数回データをロードする必要がある場合は、この文脈で適切な単語を使用しているかどうかわかりませんが、その場合はTalendツールなどのETLプロセスを構築する必要があります。

+0

ありがとうございました。私は同じアプローチをして、BTEQ(CASEステートメントの使用)の列で演奏しました。 –

関連する問題