▶ データベースからデータを抽出する方法は以下をご覧ください
はじめに
今回はSQLiteに外部のcsv形式のファイルからデータを取り込む方法を基本から解説します。これまでテーブルの作成、レコードの作成とみてきましたが、実際には外部からデータを取り込むことが多いでしょう。基本から丁寧に解説していきます。
▶ テーブルの作成は以下の投稿をご覧ください。
csvファイルをデータベースに取り込む
今回もPythonから離れてSQLでの作業となります。まずはcsvファイルを作っておきましょう。次のようなcsvファイルを用意しました。
このcsvファイルは「animals.csv」という名前を付けておきましょう。
書式
ファイルからテーブルにデータを読み込むには、「.import」コマンドを使用します。先の書式を確認しておきましょう。
.importに続けて、ファイル名、テーブル名と続けます。簡単ですね。ファイルをインポートする場合は既にテーブルがある場合と、新たなテーブルに取り込む場合とで多少異なるので、それぞれ順にみていくことにしましょう。
既存のテーブルに取り込む
前に作ったAnimalテーブルにデータを取り込むことにしましょう。
▶ テーブルの作成は以下の投稿を参考にしてください。(Animalというテーブルを作っています)
まずファイルをインポートする前に、「.mode」コマンドでcsvモードに変更しておく必要があります。そのあとに「.import」コマンドを続けます。
何の反応もありません。これは、エラーが起きてないということなので、きっとうまくいってますね。確認しておきましょう。テーブルの中身はSELECT文でみることができましたね。
もともとデータがあったところに追加する形でデータを取り込むことができました。ちなみにcsvはUTF-8で改行コードはLF(改行を\nで表す)で作る必要があるので注意してください。
新しいテーブルに取り込む
次にテーブルが用意されていない場合です。
これもエラーになりません。この場合はあたらしいテーブルが作られます。データを見てみましょう
これもエラーになりません。データを見てみましょう。
ちょっとおかしいですね。もとのcsvファイルは以下でした。
1行目のデータが取り込まれていません。実は、csvファイルから新しいテーブルにデータを取り込む場合、インポートしたデータの最初の行がカラムとして取り込まれます。
「.header on」としてカラム名を表示させてみましょう。
このように1行目のデータがカラムとして表示されていますね。インポート先のテーブルがない場合にはエラーにならずに正常終了して、1行目がカラム名として取り込まれるため注意するようにしましょう。
また、テーブルを定義するときに各カラムの型を指定していました。csvを取り込んで新規にテーブルが作られた場合はどうなるのでしょう?これも確認しておきましょう。
このようにすべてのカラムがテキスト型となります。この点も注意が必要ですね。
まとめ
今回はcsvファイルからデータベースにデータを取り込む方法をみてきました。既にテーブルが定義されている場合と、csvファイルからデータを取り込むと同時にテーブルを作成する場合とで挙動が違う点に注意が必要となるのでしたね。
コメント