Closed hirossyi73 closed 3 years ago
ご検討ありがとうございます。私はプログラムの技術力はありませんが個人的意見として 大量データのインポートは実務において必須と思います (3)案が一番良いとは思いますが、 (1)でもエクスポートと組み合わせれば、削除→上書きで更新的な扱いができるのではないでしょうか? 現在の1000件制限では実務をテストで開始するのも難しい(詳しくない為)と思います。 他の商品で恐縮ですがプリザンター?という同様のソフトを試した場合仕組みはわかりませんが大量インポートが可能でした。 画面から誰にでも簡単に使えるのが便利だと素人感覚では思うのですが、 なによりもまずは使えるほうがありがたいと感じます。 生産性のない内容ですがよろしくお願いします。
@ENEOS33 ご意見ありがとうございます。 確かに業務としては、やはり1000件以上の区分けというのは、大きなハードルとなるように感じます。 対応方法、今後も検討してまいります。
(1)については、v3.1.9で対応しました。 https://exment.net/docs/#/ja/data_bulk_insert
コマンドによるインポートも、先日対応しました。 https://exment.net/docs/#/ja/data_cmd_import_export
これにて、一度クローズとさせてください。
概要
データのインポート機能について、v3.1.7にて、一度に取り込みを行える件数に上限を設けさせていただきました。既定だと1000件です。
制限を設けた理由は、データ件数が多すぎると、タイムアウト発生、メモリ超過を避けられないためです。
ですが、数十万件を超えるデータのインポートを行う場合、ファイルを1000件ずつ分割してインポートするには現実的ではないと考えます。
処理を見直し、画面からのインポート件数を引き上げること自体は可能です。 とはいえ、「10万件を画面から同時に出来るか」「100万件を画面から同時に出来るか」といった話になると、画面からのインポートは、必ずどこかで破綻します。
そのため、大量データをインポートする際に、どのような方法があるかどうか、別途議論・ご意見お伺いしたいです。
機能案
(1)バルクインサート
開発難度:小(すでに開発済、マニュアル調整中)
MySQLの「LOAD DATA」を利用し、インポートする方法。 内部では実装済みで、マニュアル調整中。 一括で高速で登録できるが、csvのみ、事前バリデーション、SelectTable列をidに置き換える処理などを行うことが出来ず、新規登録のみになる(更新は不可)
(2)コマンド実行によるインポート
開発感度:小~中
コマンド実行により、ファイルをインポートする。 特定の場所にcsv・Excelファイルを配置し、そのファイルのあるディレクトリを指定してコマンド実行、フォルダ内のデータをすべて取り込む。
画面からの実行ではないので、タイムアウトは発生しない。ただしメモリの問題は、別途解消が必要。
システム管理者が、都度コマンドを実行する必要がある。
(3)画面から登録したファイルを、非同期(もしくはコマンド)で取込を実施する。
開発感度:大
これまでと同じように画面からファイルをアップロードするが、その時点ではデータインポートを実行しない。
キューとして保持しておき、後から非同期で取込処理を実施する。 非同期処理:https://exment.net/docs/#/ja/additional_queue
(名前を出してしまうと)Dynamicsのデータ取込のイメージ。 https://dynamics365.andaze.com/how-to-import-data/
取込結果やバリデーション結果を、別途確認できる画面が必要。今はダイアログで結果を表示できるが、それを別の画面で表示する必要がある。