Accessのインポートエラーテーブルが邪魔、自動削除したい…っていうかそもそも作成されないようにしたい
バージョン
Windows10 Pro バージョン20H2 OSビルド19042.630
Access for Microsoft 365 MSO(16.0.13328.20334)32ビット
インポートエラーテーブルってなんぞ?
なんでこんなものができるの?
例えばcsvをテーブルにインポートする為に、下記のようなコードを書いたとします。
DoCmd.SetWarnings False
DoCmd.TransferText _
acImportDelim, _
"インポート定義名", _
"テーブル名", _
"csvファイルパス", _
True
DoCmd.SetWarnings True
んでんでんで、csvファイルに項目ずれなどがあって、正常にインポートできなかった時に、インポートエラーテーブルが作られちゃいます。
数値型カラムに文字列を入れようとする状態になってたりとか。
インポートエラーテーブルは自動で削除されません。
何かしら対処しないと残り続けます。
インポートエラーテーブルは必要ないから全消しするぞ関数
Accessのローカルテーブル内から名前に『_インポート エラー』を含むテーブルを全て削除する関数がこちら。
Public Function drop_import_error_table()
Dim tbl_ As DAO.TableDef
For Each tbl_ In CurrentDb.TableDefs
If tbl_.Name Like "*_インポート エラー*" Then
DoCmd.DeleteObject acTable, tbl_.Name
End If
Next
End Function
同名ファイルをインポートすると下記のようになるので、『_インポート エラー』を 含む を削除条件にしています。
いやらしいファイル
ファイル名 + _インポート エラー でテーブルが作られるから、 ファイル名が長いと …ごらんのありさまだよ。
赤枠のやつは前項の関数では削除されないよ…。
仕方ないから 『インポート』 とか 『インポ』 で検索かけて手で消すしかないよ…(´・ω・`)
もしそんな場面を見られでもしたら…。
(うわ!何この人…仕事中に『インポ』で検索かけてる…変態だわ……近づかないようにしよ……)
…となるわけです(´・ω・`)
外部ファイルを取り込む時は、対象ファイルを作業フォルダーにリネーム移動した上で取り込んだ方がいいかもね。
規則性のあるファイル名にして取り込めば、テーブル名の桁あふれの心配無くなるぞい。
インポートエラーテーブルのデータを使って何かしたい時も、プログラム作りやすくなるしね。
そもそも作らせない設定は?
いろいろ探したのですが、インポートエラーテーブルを作らないようにする設定は見つかりませんでした。
蛇足
通常使うテーブルは名前に『_インポート エラー』を含まないように設計した方がいいかな…。(多分そんなことはしないとは思うけど)
こういうことあるよ(´・ω・`)
1. 運用の途中でAccessに取り込むcsvの仕様が変わる。
2. 処理には無関係のカラムの値が変わっただけなので、クリティカルな処理には影響なし。(でもインポートエラーにはなる)
3. いつのまにかインポートエラーテーブルが大量にAccess内に出来上がっていた…。
例えば10万行くらいのcsv取り込む処理でインポートエラーになると、場合によっては20万~30万レコードのインポートエラーテーブルできちゃったりするよ(´・ω・`)
…んで、消さなければそのテーブルがずっと残り続けるわけです…。
Author And Source
この問題について(Accessのインポートエラーテーブルが邪魔、自動削除したい…っていうかそもそも作成されないようにしたい), 我々は、より多くの情報をここで見つけました https://qiita.com/waokitsune/items/1de358a6f0133ed57bb7著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .