2017-11-07 5 views
3

CSVファイルをインポートするスクリプトを作成しました。最後にインポートされた行が空の入力ストリームの進行中です

しかし、それは私が一時テーブルにインポートすると、私の一時テーブルの最後のレコードは空のものです。私は3倍のCSVをチェックし、空の行は含まれていません。

これは私のコードです:

INPUT STREAM sEaImport FROM VALUE(cCsvEaFileLocation). 
/* Skip first line to remove the headers */ 
IMPORT STREAM sEaImport DELIMITER ";" vcline. 
REPEAT: 
    CREATE ttEa. 
    IMPORT STREAM sEaImport DELIMITER ";" ttEa. 
END. 
INPUT CLOSE. 

FOR EACH ttEa: 
    DISPLAY ttEa. 
END. 

私はREPEATブロックの外側でttEaを表示すると、私はこのような空のレコードを取得:私はREPEAT内ttEaを表示すると

enter image description here

をブロック私は空のレコードを取得しません。

誰か助けてくれますか? CSVファイルの末尾に

INPUT STREAM sEaImport FROM VALUE(cCsvEaFileLocation). 
/* Skip first line to remove the headers */ 
IMPORT STREAM sEaImport UNFORMATTED vcline. 
REPEAT on error undo,leave on endkey undo,leave: 
    CREATE ttEa . 
    IMPORT STREAM sEaImport DELIMITER ";" ttEa. 
END. 

INPUT STREAM sEaImport CLOSE. 
+0

私は、あなたが空のレコードを作成していると思い、ループがEOFを上げるIMPORTによって壊れていると思うので、あなたのリピートにON ERROR UNDO、LEAVE句が必要だと思います。ただし、エラーが発生するまでにすでに空白のレコードが作成されています。最後の作成を元に戻す場合を除いて、空のレコードが作成されます。 (これはERRORではなくENDKEYかもしれませんが、あなたはアイデアを得ます) – Screwtape

+0

私は今これを持っていますが、私はまだ同じ結果を得ています...私は質問 –

+0

を更新しました。テンポラリテーブルをno-undoとして定義していないのですか? – Screwtape

答えて

2

テンポラリテーブルにNO-UNDOという文がないことを確認してください。次に、REPEATステートメントをREPEAT TRANSACTIONに変更します。最後の反復はttEaレコードを作成しようとしますが失敗します。今はトランザクションになっているので、作成は元に戻されます(これは、一時テーブルにNO-UNDOを持つことができないためです)、空白のレコードはなくなります。

+0

ありがとうございました! –

+0

優れています。私は近づいていたことを知っていた...ちょうどTRANSACTION要件をつまらなかった - 私は何か新しいことを学んだ! – Screwtape

+0

私は今日もそうでした! :D –

1

移動し、Enterキーを押し、それを保存し、再実行します。これを使用して

はまだ私に同じ結果を与えます。 Progressが最後の行をインポートしないことは既知のバグですので、それが空白であることを確認してください。あなたのファイルに最後に改行がない場合は、最後のレコードを失うことになります。これはおそらくここで起こっていることです。

編集:問題は、最後にインポートするのではなく、最後に空のレコードがあると述べたので、リピートにトランザクションを追加し、テストでnullレコードはなくなりました。

repeat transaction: 
    create ttEa. 
    import stream sEaImport delimiter ';' ttEa. 

end. 
+0

私はそれを間違って尋ねたかもしれませんが、最後にインポートされた行は必要なものではありません。 –

+0

私は必要なものすべてをインポートしますが、CSVの終わりには情報を返さない別の行をインポートします。 –

+1

これは、インポートする前に作成しているためです。私は取引を行う際に輸入品を封じ込めました。今は間違った記録を取り除くようです。私は自分の答えを編集しています。 – bupereira

関連する問題