私はしばらくの間、顧客が mdb テーブル データを csv ファイルにエクスポートするのを手伝いました (そして、これらの csv ファイルをさらに処理する)。私は Ubuntu を使用していたので、mdbtools (mdb ビューアー) が利用可能になりました。現在、顧客は、私が行っている作業を Windows プログラムの形で自動化することを望んでいます。私は2つの問題に遭遇しました:
数時間経っても、プログラム/スクリプトに組み込むことができる方法でテーブル データをエクスポートできる Windows 上の無料ツールが見つかりません。Jackcess (jackcess.sourceforge.net) は有望に見えますが、ダウンロードした jar を実行すると、まったく無関係の Nokia Suite プログラムがポップアップします...
pyodbc モジュールを使用して python プログラムで 2 つのテーブルを開くことができましたが、「読み取り権限がない」ため、他のすべてのテーブルを開くことができません。今まではデータベースへのアクセス制限はないと思っていたのですが、Ubuntu の mdb ビューアーはすべてのテーブルをファジーなく開くことができるためです。他に使用できるファイルはなく、mdb ファイルだけです。1 つの可能性として、これはパーミッションの問題ではなく、列名の特殊文字の問題である可能性があります。開くことができないすべてのテーブルには、国別文字を含む列名が少なくとも 1 つありますが、開くことができる 2 つのテーブルにはありません。次のように、Python から呼び出された SQL 選択で角括弧を使用しようとしました: SQL = 'SELECT [colname] from SomeTable;' しかし、違いはありません。
それが本当に許可の問題である場合、私のプログラムが実行できる解決策も必要であり、手動の手順があってはなりません。
編集: mdb ファイルを生成するプログラムの開発者は、どのテーブルにも制限がないことを確認しています。そのため、「読み取り権限がありません」というエラー メッセージは誤解を招くものです。代わりに、列名に国別文字が含まれていると思われる問題を回避することに焦点を当てます。以下に提案する JSDB アプローチから始めます。みんな、ありがとう!
編集 2: 重要だと思う発見をしました。
編集 3: JDBC を試してみました。編集 2 の所見から予想されるように、同じエラーが再び発生します。どうやら解決すべき問題はテーブルの所有権です (ただし、Linux の MDB Viewer はそれを気にしていないようですが...)。ファイルの作成者は許可設定を導入していないと言っているので、奇妙なテーブル所有権は、新しいプログラム (2010 など) を使用して古いプログラム (90 年代など) で生成されたデータを読み取った結果である可能性があると思います。または、古いプログラムの移行中に導入されました。それを解決する方法についてのアイデアはありますか?