読者です 読者をやめる 読者になる 読者になる

アーキテクチャをスマートに。

株式会社ネオジニア代表。ITアーキテクトとしてのお仕事や考えていることなどをたまに綴っています。(記事の内容は個人の見解に基づくものであり、所属組織を代表するものではありません)

Excelシートに入力されたテキストと画像をSQLiteデータベースに登録する(4)

ちょっと脱線。SQLiteの日本語パスの取り扱いに注意

その前に、ここで一つハマったポイントを書いておきます。
sqlite3.exe を起動する際、引数に日本語が含まれたパスを指定すると、認識してくれません。
コマンドプロンプトで試してみるとわかります。

C:\>sqlite3 C:\テスト\test.db
SQLite version 3.7.10 2012-01-16 13:28:40
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> CREATE TABLE table2 ( id INTEGER, dat BLOB);
Error: unable to open database "C:\テスト\test.db": unable to open database file


C:\>

この場合は、DBファイルがある場所まで CD してから、ファイル名だけを指定すれば回避できます。
ファイル名には日本語を含めてはいけません。日本語が含まれているとファイル名が化けてしまいます。

実際に試してみました。(環境:Windows XP SP3)

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\user>cd C:\テスト

C:\テスト>C:\sqlite3.exe テスト.db
SQLite version 3.7.10 2012-01-16 13:28:40
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> CREATE TABLE table2 (id INTEGER, dat BLOB);
sqlite> .exit

C:\テスト>dir
 ドライブ C のボリューム ラベルは SYSTEM です
 ボリューム シリアル番号は 8899-BBA0 です

 C:\テスト のディレクトリ

2012/02/23  17:21    <DIR>          .
2012/02/23  17:21    <DIR>          ..
2012/02/23  17:21             2,048 eXg.db
               1 個のファイル               2,048 バイト
               2 個のディレクトリ  12,610,568,192 バイトの空き領域

C:\テスト>

「テスト.db」を指定したつもりが、作成されたファイルは「eXg.db」となってます。
ダメダメです。