Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 快速加载中的柱操作_Sql_Pattern Matching_Teradata_Flat File - Fatal编程技术网

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

你好,我是teradata的新手。我正在使用快速加载将平面文件加载到我的TD DB中。 My data setCSV文件包含一些问题,例如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)  

那么不同的方法呢。不要在快速加载中解决这个问题,而是将数据加载到临时表,如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用例语句中使用了列。