2016-07-15 11 views
1

The raw database looks like this:SASカラム入力が機能しないのはなぜですか?

私は列入力を使用:

input 
PRODUCT_ID $ 1-47 
PRODUCT_NDC $ 48-56 
NDC_PACKAGE_CODE $ 58-69 
PACKAGE_DESCRIPTION $ 71-325 
; 

実行します。

「PACKAGE_DESCRIPTION」以外のすべての列が正しくインポートされます。

The output looks like this:

私は「PACKAGE_DESCRIPTION」の内容は、SASのテキスト制限を(データベース内のいくつかの非常に長い説明がある)を超えたので、それはだと思います。私はこれをどのように修正すべきですか?

ありがとうございます!

+0

SASログの注釈は何を表していますか?入力行の長さを表示します。 – Tom

答えて

2

INFILEステートメントの設定が無効である可能性が高いためです。 LRECL =およびTRUNCOVERオプションを追加します。

infile 'myfile.txt' lrecl=500 truncover ; 
input 
    PRODUCT_ID $ 1-47 
    PRODUCT_NDC $ 48-56 
    NDC_PACKAGE_CODE $ 58-69 
    PACKAGE_DESCRIPTION $ 71-325 
; 
0

まず、私は私のコメントで述べたようにSASで期待改行チャンスがあるのならば、私はこのような何かを試してみた適切なタイプではありません(これも良いですトムの勧告@追加) :結果を望んでいたものではありません

data want; 
    infile 'myfile.txt' lrecl=500 truncover TERMSTR=LF; 
    input 
    PRODUCT_ID $ 1-47 
    PRODUCT_NDC $ 48-56 
    NDC_PACKAGE_CODE $ 58-69 
    PACKAGE_DESCRIPTION $ 71-325 
    ; 
run; 

LF場合(これは珍しいですが)、そしてCR、その後、CRLFでみてください、と。あなたはinfileステートメントに追加することができます

その他のオプションは以下のとおりです。

  • ENCODING=通常lat1utf8またはansiの一つ。これを確認するには、まずNotepad ++、EmEditor、CoolEditなどの高度なテキストエディタでファイルを開きます。通常は下のステータスバーにどのエンコーディングが使用されているかが表示されます。同時に、どの種類の改行が使用されているかを判断することができ、TERMSTR=オプション付きの適切な改行を使用することができます。
  • RECFM=Fあなたの入力ファイルには固定長の変数があります(読み方にどのような影響があるかはわかりませんが、試してみる価値があるかもしれません)。

PS:私が驚いているのは、それらのすべてが失敗した場合ですが、もしそうであれば、過去に私が使っていたハックがありました。私は残念ながら正確な状況を思い出すことはできませんが、 "ハック"は最後の文字変数の後にダミーの数値列を入力テキストファイルに追加することでした。

PPS:PACKAGE_DESCRIPTION列の長さ自体に問題はありません。

関連する問題