生成AIで架空のポケモンを作るためのデータベースを作る過程で必要になったSQLについて一通り学んだところ。今回はデータベースの加工に戻ろう。加工のために提示されていたSQL文はこんな感じ。
入力:入れ子質問について、クエリの例文を作ってください。私がそのクエリでやりたいことを自然言語に翻訳するので、採点してください
出力:
データベースから10文字以下の行を削除するには、以下のようなSQLクエリを使用します。Pythonコードに組み込んで実行する方法を示します。
SQLクエリ
まず、SQLiteで10文字以下の行を削除するSQLクエリは次のようになります:
DELETE FROM pokemon WHERE LENGTH(description) <= 10;
Pythonコード
次に、このクエリをPythonコードに組み込んで実行する方法を示します。
import sqlite3
# データベースに接続
conn = sqlite3.connect('pokemon_data.db')
c = conn.cursor()
# 10文字以下の行を削除する
c.execute('DELETE FROM pokemon WHERE LENGTH(description) <= 10')
# データベースをコミットしてクローズ
conn.commit()
conn.close()
この程度の簡単な文章ならなんとなくわかった気になったけど、これがSQL学習編を挟んだ成果なのかどうか分からない。まぁ今なんとなくわかっていれば良しとしよう。これでバージョンだけが書かれた文章が消え、各行がポケモン図鑑の説明文となっているデータベースが作成された。csv出力してマイGPTに取り込もう。
id name description branch_id
1 繝輔す繧ョ繝繝・縺・∪繧後◆縺ィ縺阪°繧・縺帙↑縺九↓ 縺励g縺上・縺、縺ョ 繧ソ繝阪′ 縺ゅ▲縺ヲ 縺吶%縺励▼縺、 縺翫♀縺阪¥ 縺昴□縺、縲・1
文字化けしてる…
入力:
DB Browserのエクスポート機能でcsv出力したところ、以下のように文字化けしていました。原因と対策を教えてください。
id name description branch_id
1 繝輔す繧ョ繝繝・縺・∪繧後◆縺ィ縺阪°繧・縺帙↑縺九↓ 縺励g縺上・縺、縺ョ 繧ソ繝阪′ 縺ゅ▲縺ヲ 縺吶%縺励▼縺、 縺翫♀縺阪¥ 縺昴□縺、縲・1
出力:
CSVファイルの文字化けは、通常、エンコーディングの不一致が原因です。日本語の文字が正しく表示されない場合、エクスポート時または開く際のエンコーディングが正しく設定されていない可能性があります。
原因と対策
原因
- エクスポート時のエンコーディング設定:
- DB Browserでエクスポートする際のエンコーディング設定が適切でない可能性があります。
- ファイルを開く際のエンコーディング設定:
- CSVファイルを開く際に、適切なエンコーディングが指定されていないと、文字化けが発生します。
対策
- DB Browserでのエクスポート設定を確認する:
- エクスポートする際に、エンコーディングを「UTF-8」に設定します。DB Browser for SQLiteでは、エクスポート時にエンコーディングを指定するオプションがあるので、以下の手順に従ってください:
File
メニューからExport
を選択します。Table(s) as CSV file
を選択します。Encoding
オプションを「UTF-8」に設定します。
- CSVファイルを適切なエンコーディングで開く:
- CSVファイルを開くアプリケーション(Excelなど)で、エンコーディングを「UTF-8」に設定して開きます。以下はExcelでの手順です:
- Excelを開き、
データ
タブを選択します。 テキスト/CSVから
を選択します。- ファイルを選択し、インポートウィザードでエンコーディングを「65001: Unicode (UTF-8)」に設定します。
再実行手順
- DB BrowserでCSVをUTF-8エンコーディングでエクスポートする:
- 上記の手順に従ってエクスポート設定を確認し、CSVファイルをエクスポートします。
- ExcelでCSVをUTF-8エンコーディングで開く:
- エクスポートしたCSVファイルをExcelで開く際に、エンコーディングを「UTF-8」に設定してインポートします。
これにより、CSVファイルの文字化けを防ぐことができます。上記の手順を試してみてください。
対策2でcsvの開き方変えるだけで解決した。ありがたや。これで既存のポケモン図鑑の説明文のデータは用意できたので、これをマイGPTに取り込んで文章を考えさせてみよう。
次回に続く