質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Q&A

解決済

2回答

664閲覧

CSVをバッチプログラムで読取る際の注意点

naga777

総合スコア7

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

0グッド

0クリップ

投稿2021/12/22 00:58

特定のディレクトリにプログラムによって作成されたCSVファイルをバッチで読込みDBにインポートするプログラムの設計をしています。

このとき、フェールセーフ、フールプルーフで考えることとして何がありますでしょうか

作成中のCSVファイルを読んでしまう可能性はあるのでしょうか?ある場合の対策はどのようなものがありますか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

CSVファイルに限らないですが、作成途中(プログラムがまさに書き込んでいる途中)のファイルを読むと、作成途中のその途中まで読むことになりますので、多くの場合は、まずいですね。

作成し終わってから読む必要があります。
簡単には、作成途中では$$$のような仮の名前にしておいて、作成し終わってからfoo.csvのような本来の名前にリネームする。

投稿2021/12/22 16:15

otn

総合スコア84804

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

naga777

2021/12/23 05:18

otnさん ありがとうございます ちなみに、ファイルを作成する相手の挙動をコントロールできない場合はどうでしょうか? ファイルの中身の最後にendを入れるルールを作るなどでしょうか?
otn

2021/12/23 06:08

挙動をコントロールできないといいつつ、endを入れるような修正が出来るのであれば、それで良いかと思います。 挙動をコントロールできる場合は、foo.csv を書き終わったら foo.csv.doneという目印のファイルを作るという手もあります。 他には、該当ファイルがオープン中かどうか調べるか。コマンドレベルだと lsofコマンドです。 (他ユーザーの情報を知るにはrootで実行する必要がある)
guest

0

ちょっと状況がわかりませんが、
CSVデータを検証して不正データがあるかどうかを事前チェックし、
「〇〇件のデータをインポートします」という確認ダイアログをだすことは有効です

投稿2021/12/22 01:05

yambejp

総合スコア115012

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

naga777

2021/12/22 01:08

yambejpさん ありがとうございます 読み込むCSVファイルは不定期かつ大量に送られてくるので、こちらの確認無しでインポートをさせたい狙いがあります。 その際に、バッチの起動タイミングで作成中のファイルが存在する場合、中途半端なデータとしてインポートしてしまわないかと不安になっております。
yambejp

2021/12/22 01:24

無手順でデータの読み込みをするのであれば、単純な不正データを弾くとして残りは「正しい」と信じるしか無いでしょう。「送られてくる」仕組みでデータが正常終了しているかどうかは判断できるはずです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問