未交付Teradata行(trget):格式或数据包含错误字符

时间:2018-02-16 15:35:04

标签: sas string-formatting teradata

我使用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可能包含一些特殊字符。

有没有人有解决方案?

1 个答案:

答案 0 :(得分:0)

尝试一些事情。

  1. “2017-07-01”和“2017-07-15”之间的演员(时间段为日期)

  2. 检查timeperiod中的值,可能有一些值无法转换为date。我已经多次看到,字符中的值不是形式转换为日期和查询失败。

  3. 运行以下查询时只使用text1和text2且没有where子句。

    选择前10名   文本1,   文本2   来自TeraTabl

  4. 第三点将明确text1和text2列没有问题。前十名就像SAS中的outobs = 10

    1. 在字符的高级别(非测试代码)的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'