SQLファイルをデータベースに投入しよう!

データベース

こんにちは。ECF Tech担当
Michiharu.Tです。

データベースを扱う開発やSQLを学習する際など、初期データの投入や既存データの移行に、SQLファイルを使ってデータを登録したい場面が多くあります。ですが、DBMSごとにコマンドや手順が微妙に異なり、戸惑うことも少なくありません。

本記事では、SQLファイルからデータベースにデータを投入するための方法をご紹介します。
手順は、PostgreSQL、MySQL、SQliteの3つのDBMSをそれぞれ説明しています。ご自身のお使いになられるDBMSに応じてご活用ください。DBMSごとの手順は、このページをスクロールするか下のリンクから移動できます。

また、本記事では各DBMSがすでにインストールされているものとして説明をしています。各DBMSのインストール手順が必要な方は、下のリンクからご参照ください。

下のリンクから、サンプルとなるSQLファイルをダウンロードできます。パソコンショップの販売管理を題材としたテーブル定義とそのデータです。データベースに投入後は、SQLの練習にもご活用いただけます。

サンプルデータ
※右クリックして、「名前をつけてリンク先を保存」をクリックしてください。

本記事では、コマンドプロンプトを使ったデータの投入方法を説明しています。コマンドプロンプトの基本操作については、こちらの記事をご覧ください。

PostgreSQL

コマンドプロンプトを起動し、psqlコマンドでデータベースにアクセスします。

psql -U postgres

-Uオプションでユーザー名を指定します。上のコマンドではpostgresというユーザー名を指定しています。

適宜パスワードを入力して、ログインします。

PostgreSQL 導入手順01

sample.sqlのデータを保存するデータベースを作成しましょう。次のコマンドで、sampleという名前のデータベースを作成します。

create database sample;

PostgreSQL 導入手順02

作成したら、\l sampleと入力し、データベースがあること確認しましょう。

PostgreSQL 導入手順03

\qコマンドで、psqlからログアウトします。

PostgreSQL 導入手順04

次のコマンドを実行し、SQLファイル内のSQL文を実行します。

psql -U postgres -f ファイルパス -d sample

-Uユーザー名を指定するオプションです。
-fファイルパスを指定するオプションです。ご自身の環境で、sample.sqlを保存した場所を指定してください。
-dデータベース名を指定するオプションです。

パスワードを聞かれた場合は入力します。

下は、ファイルパスとしてC:\Users\ecf_pc\Desktop\sample.sqlを設定して実行したものです。sample.sql内のSQL文が実行されます。

PostgreSQL 導入手順05
※ sample.sqlには、最初にテーブル削除の命令が入っているため、該当テーブルがない場合に上記画面のようにNOTICE:~のようなメッセージが出ますが、問題ありません。

SQLファイルの実行時に、次のようなエラーが発生するかもしれません。

psql:C:/Users/ecf_pc/Desktop/sample.sql:57: ERROR:  符号化方式"SJIS"に対する不正なバイト列です: 0x8e 0x27

これは、SQLファイル内の文字コードとPostgreSQLが読み込もうとしている文字コードが一致していないために起こります。

最も簡単な修正方法は、SQLファイルを、文字コードがSJIS形式のファイルとして保存しなおすことです。

メモ帳でSQLファイルを開き、次のように保存してください。
文字コードを変更

再度ログインし、次のコマンドでsampleデータベースにアクセスします。

\c sample;

PostgreSQL 導入手順06

次のSELECT文を実行してみましょう。

SELECT * FROM products;

正常に出力されれば成功です。

PostgreSQL 導入手順07

MySQL

はじめに、MySQLにログインします。コマンドプロンプトで次のように入力します。

mysql -u root -p

-uはユーザー名を指定するオプションです。
-pはパスワードを指定するオプションです。

パスワードを聞かれますので適宜入力します。ログインに成功すると、下のような画面になります。

MySQL 導入手順01

sample.sqlのデータを投入するデータベースを作成しましょう。次のコマンドで、sampleという名前のデータベースを作成します。

create database sample;

正しく実行できると、次のメッセージが表示されます。
MySQL 導入手順01

show databases;を実行すると、sampleというデータベースが作成されていることが確認できます。

MySQL 導入手順03

データベースが作成できたら、exitのコマンドでmysqlをログアウトします。

MySQL 導入手順04

コマンドプロンプトから、次のコマンドを実行します。

mysql -u root -p -D sample < ファイルパス

-Dは使用するデータベースを指定するオプションです。パスワードを適宜入力します。
ファイルパスの部分は、sample.sqlを保存した場所を指定してください。

下は、ファイルパスとしてC:\Users\ecf_pc\Desktop\sample.sqlを設定して実行したものです。正常に実行できた場合は何も表示されず、コマンドプロンプトの入力モードに戻ります。

MySQL 導入手順05

再度ログインし、次のコマンドでsampleデータベースにアクセスします。

use sample;

MySQL 導入手順06

次のSELECT文を実行してみましょう。

SELECT * FROM products;

正常に出力されれば成功です。

MySQL 導入手順07

SQLite

任意のフォルダを準備し、sample.sqlを保存します。

SQLite 導入手順01

sample.sqlを保存したフォルダでコマンドプロンプトを開きます。

SQLite 導入手順02

次のコマンドを入力します。

sqlite3 sample.db < sample.sql

sample.sqlと同じフォルダ内にsample.dbという名前のファイルが作成されます。これでデータベースの作成完了です。

SQLite 導入手順03

次のコマンドでデータベースにアクセスします。

sqlite3 sample.db

アクセスに成功すると次のように出力され、コマンドが入力できるようになります。

SQLite 導入手順04

SQL文を実行し、結果が得られればOKです。

SQLite 導入手順05

おわりに

最後までご覧頂き、ありがとうございました。皆様のSQLトレーニングの一助になれば幸いです。

タイトルとURLをコピーしました