ファイルをロードするためのUSQLスクリプトとCSV抽出プログラムがあります。ただし、ファイルの数ヶ月は4列、いくつかの月は5列を含むことがあります。USQLで異なる列のファイルを処理する
フィールドを4つまたは5つ選択してエクストラクタを設定すると、予想されるファイルの幅に関するエラーが発生します。チェックデリミタなどを実行します。驚きはありません。
この問題の回避策は何ですか?USQLはまだ初心者であり、基本的なエラー処理がいくつかありますか?
エクステンダのサイレント句を使用して、4列分の幅の広い列を無視しようとしました。次に、IF条件付きの行セットの行数を取得します。これには5列の抽出が含まれています。ただし、IF式ではスカラー変数として使用されない行セット変数の世界が発生します。
また、C#スタイルのカウントとsizeof(@ AttemptExtractWith4Cols)を試しました。どちらもうまくいきません。多くが容易になるだろうUSQLこの中TRY CATCHブロックのようなものがあった場合はもちろん、
DECLARE @SomeFilePath string = @"/MonthlyFile.csv";
@AttemptExtractWith4Cols =
EXTRACT Col1 string,
Col2 string,
Col3 string,
Col4 string
FROM @SomeFilePath
USING Extractors.Csv(silent : true); //can't be good.
//can't assign rowset to scalar variable!
DECLARE @RowSetCount int = (SELECT COUNT(*) FROM @AttemptExtractWith4Cols);
//tells me @AttemptExtractWith4Cols doesn't exist in the current context!
DECLARE @RowSetCount int = @AttemptExtractWith4Cols.Count();
IF (@RowSetCount == 0) THEN
@AttemptExtractWith5Cols =
EXTRACT Col1 string,
Col2 string,
Col3 string,
Col4 string,
Col5 string
FROM @SomeFilePath
USING Extractors.Csv(); //not silent
END;
//etc
:
コードスニペットはあなたに私が取っているアプローチの感触を得ました。
これは合理的なアプローチですか?
すべての入力をいただければ幸いです。
ありがとうございます。
ありがとうマイク、私は見てみましょう。 –