Sql 快速加载中的柱操作
你好,我是teradata的新手。我正在使用快速加载将平面文件加载到我的TD DB中。 My data setCSV文件包含一些问题,例如city列中的某些行包含正确的数据,但某些行包含NULL。包含NULL的city列的值存储到下一列中,即邮政编码,依此类推。在最后,由于行中的额外NULL,一些行包含额外的列。下面举例说明。如何在fastload中解决此类问题?有人能用SQL示例回答这个问题吗Sql 快速加载中的柱操作,sql,pattern-matching,teradata,flat-file,Sql,Pattern Matching,Teradata,Flat File,你好,我是teradata的新手。我正在使用快速加载将平面文件加载到我的TD DB中。 My data setCSV文件包含一些问题,例如city列中的某些行包含正确的数据,但某些行包含NULL。包含NULL的city列的值存储到下一列中,即邮政编码,依此类推。在最后,由于行中的额外NULL,一些行包含额外的列。下面举例说明。如何在fastload中解决此类问题?有人能用SQL示例回答这个问题吗 City Zipcode country xyz
City Zipcode country
xyz 12 Esp
abc 11 Ger
Null def(city's data) 12(zipcode's data) Por(country's data)
那么不同的方法呢。不要在快速加载中解决这个问题,而是将数据加载到临时表,如DATABASENAME.CITIES\u TMP,其结构如下
City | zip_code | country | column4
xyz | 12 | Esp |
NULL | abc | 12 | Por
在下一步中,使用结构创建目标表DATABASENAME.CITY
City | zip_code | country |
作为最后一步,您需要运行2个插入查询:
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过程。如果您是Teradata新手,最好熟悉Teradata并行传输程序TPT。Fastload、MLoad和FastExport现在已被弃用。您无法使用Fastload解决此问题。输入文件中的数据实际上是什么样子的?我已经编辑了这个表。我希望我的问题现在清楚了。在我看来,无论何时系统试图加载城市数据,系统都必须首先扫描它,就像城市列包含Null或其他内容一样,然后从下一列获取数据。我不知道如何在SQLServer中实现这个逻辑。再说一遍,输入文件中的数据是什么样子的,是CSV吗?空值是如何表示的?可能最简单的方法是使用sed预处理数据,例如sed s/^NULL//或尝试获取正确的日期。否则,您将作为单个列加载到暂存表中,然后在STRTOKcol,,,1='NULL'时应用大小写,然后。。。到每个目标列。或者使用本例删除空值,然后使用CSVLD。非常感谢。我采用了同样的方法,在BTEQ用例语句中使用了列。