我使用SAS 9.4从Teradata表中提取数据,我有以下错误
Teradata row not delivered (trget): The format or
data contains a bad character
Proc sql;
Connect to Teradata(user=......)
Create table table1 as
Select * from connection to Teradata
(Select
Text1,
Text2
From TeraTable
Where timeperiod between ‘2017-07-01’ and ‘2017-07-15’
Quit;
text1和text2可能包含一些特殊字符。
有没有人有解决方案?
答案 0 :(得分:0)
“2017-07-01”和“2017-07-15”之间的演员(时间段为日期)
检查timeperiod中的值,可能有一些值无法转换为date。我已经多次看到,字符中的值不是形式转换为日期和查询失败。
运行以下查询时只使用text1和text2且没有where子句。
选择前10名 文本1, 文本2 来自TeraTabl
第三点将明确text1和text2列没有问题。前十名就像SAS中的outobs = 10
在字符的高级别(非测试代码)的timeperiod列中查找错误字符的一种方法(如果它以yyyy-mm-dd的形式)
选择在('20','19')中的substr(timeperiod,1,2)然后'y'其他'n'的情况 结束了第一次, 转换(substr(timeperiod,1,2)为整数)在1到99之间然后'y'的情况 否则'n'结束为lastyearpart, 转换(substr(timeperiod,6,2)为整数)在1到12之间然后'y'的情况 别的'n'以月份结尾, 转换(substr(timeperiod,6,2)为整数)在1到31之间然后'y'的情况 否则'n'结束为daypart / *这再次没有解决febrauary 30或31 * / 来自teratbl
查看您是否在上面的4列中有'n'