5

ご挨拶、私は私のケースを提示します:

  • 私はLinuxUBUNTUにいます
  • それぞれ約500MBのJet3.MDB(MS Acess Database)がいくつかあり、データはcp1256/WINDOWS-1256でエンコードされています。
  • この記事に従って変換を行うことでsqliteデータベースを作成しましたhttp://cltb.ojuba.org/en/articles/mdb2sqlite

これが私がデータベースを変換するために作ったbashスクリプトです。私がMSAccessx.MDBを持っていると仮定します

mdb-schema "x.mdb" | perl -wpe 's%^DROP TABLE %DROP TABLE IF EXISTS %i;
  s%(Memo/Hyperlink|DateTime( \(Short\))?)%TEXT%i;
  s%(Boolean|Byte|Byte|Numeric|Replication ID|(\w+ )?Integer)%INTEGER%i;
  s%(BINARY|OLE|Unknown ([0-9a-fx]+)?)%BLOB%i;
  s%\s*\(\d+\)\s*(,?[ \t]*)$%${1}%;' | sqlite3 > x.db 

for i in $(mdb-tables "x.mdb"); do echo $i; (
echo "BEGIN TRANSACTION;";
MDB_JET3_CHARSET="WINDOWS-1256" mdb-export -R ";\n" -I "x.mdb" $i;
echo "END TRANSACTION;" ) | sqlite3 "x.db"; done

MDB_JET3_CHARSETをWINDOWS-1256、cp1256、WINDOWS-1251、cp1251、UTF-8に変更しようとしました。閲覧するとデータの結果が異なるものもありますが、それでもまったく意味がありません。

前に感謝し、私の悪い英語をお詫びします

4

1 に答える 1

4

さて、多くのサイトで遊んだ後、私はこのhttp://git.ojuba.org/cgit/thawab/tree/に出くわし、私にアイ​​デアを与えるスクリプトを見つけました(誰かが興味を持っているなら、それはbok2ki.pyです)、オープンソースが大好き!:)

「UTF-8」を値としてMDB_ICONVパラメーターを追加し、MDB_JET3_CHARSETパラメーターの値を「cp1256」に変更します。

実際、私はそれらのパラメーターが実際に何であるかを本当に知りませんが、MDB_JET3CHARSETはcharset/encoding / codepagesを定義することであり(私は本当に違いを知らないので、もっと調査する必要があります)、MDB_ICONVは定義することだと思いますターゲットデータベースのエンコーディング。とにかく、それらは私の仮定にすぎません。

次に、これが私の新しいスクリプトです。

mdb-schema "x.mdb" | perl -wpe 's%^DROP TABLE %DROP TABLE IF EXISTS %i;
  s%(Memo/Hyperlink|DateTime( \(Short\))?)%TEXT%i;
  s%(Boolean|Byte|Byte|Numeric|Replication ID|(\w+ )?Integer)%INTEGER%i;
  s%(BINARY|OLE|Unknown ([0-9a-fx]+)?)%BLOB%i;
  s%\s*\(\d+\)\s*(,?[ \t]*)$%${1}%;' | sqlite3 x.db 

for i in $(mdb-tables "x.mdb"); do echo $i; (
echo "BEGIN TRANSACTION;";
MDB_JET3_CHARSET="cp1256" MDB_ICONV="UTF-8" mdb-export -R ";\n" -I "x.mdb" $i;
echo "END TRANSACTION;" ) | sqlite3 "x.db"; done
于 2011-05-21T15:51:50.973 に答える