データベース操作を効率化!コマンドラインからSQLite3スクリプトを実行する
コマンドラインから SQLite3 スクリプトを実行する方法
SQLite3 は、軽量で使いやすいデータベース管理システムです。コマンドラインから SQLite3 スクリプトを実行することで、データベースの作成、テーブルの操作、データの挿入と抽出などを効率的に行うことができます。
方法
SQLite3 スクリプトを実行するには、以下の 3 つの方法があります。
sqlite3 database.db << EOF -- スクリプト内容 EOF
#!/bin/bash sqlite3 database.db << EOF -- スクリプト内容 EOF
Here Document を使用して、sqlite3 コマンドに SQL ステートメントを渡すことができます。
sqlite3 database.db << 'EOF' -- スクリプト内容 EOF
例
以下の例は、"my_database.db" という名前のデータベースに "customers" というテーブルを作成し、レコードを挿入するスクリプトです。
sqlite3 コマンド
sqlite3 my_database.db << EOF
CREATE TABLE customers (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT UNIQUE
);
INSERT INTO customers (name, email) VALUES
('Alice', '[email protected]'),
('Bob', '[email protected]'),
('Charlie', '[email protected]');
EOF
Bash スクリプト
#!/bin/bash
sqlite3 my_database.db << EOF
CREATE TABLE customers (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT UNIQUE
);
INSERT INTO customers (name, email) VALUES
('Alice', '[email protected]'),
('Bob', '[email protected]'),
('Charlie', '[email protected]');
EOF
Here Document
sqlite3 my_database.db << 'EOF'
CREATE TABLE customers (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT UNIQUE
);
INSERT INTO customers (name, email) VALUES
('Alice', '[email protected]'),
('Bob', '[email protected]'),
('Charlie', '[email protected]');
EOF
注意事項
- スクリプトを実行する前に、sqlite3 コマンドがインストールされていることを確認してください。
- データベースファイルへのパスと、スクリプトの内容に誤りがないことを確認してください。
- SQL ステートメントの構文ミスがあると、エラーが発生します。
上記以外にも、さまざまな方法でコマンドラインから SQLite3 スクリプトを実行することができます。ご自身の目的に合った方法を選択してください。
CREATE TABLE customers (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT UNIQUE
);
INSERT INTO customers (name, email) VALUES
('Alice', '[email protected]'),
('Bob', '[email protected]'),
('Charlie', '[email protected]');
データの選択
このスクリプトは、"customers" テーブルにあるすべてのレコードを選択します。
SELECT * FROM customers;
このスクリプトは、"customers" テーブルの "id" が 1 のレコードの "email" を "[email protected]" に更新します。
UPDATE customers
SET email = '[email protected]'
WHERE id = 1;
DELETE FROM customers
WHERE id = 2;
テーブルの削除
DROP TABLE customers;
説明
- 上記のスクリプトは、sqlite3 コマンドを使用して実行することを想定しています。
- 各スクリプトはセミコロン (;) で区切られています。
- SQL ステートメントの詳細については、SQLite のドキュメントを参照してください。
補足
- サンプルコードはあくまでも一例です。ご自身の目的に合わせて変更してください。
- データベースを操作する前に、必ずバックアップを取っておいてください。
コマンドラインから SQLite3 スクリプトを実行するその他の方法
シェル関数
Bash などのシェルを使用して、SQLite3 を呼び出すシェル関数を作成することができます。この方法により、スクリプトをより柔軟に記述することができます。
#!/bin/bash
create_customer_table() {
sqlite3 "$1" << EOF
CREATE TABLE customers (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT UNIQUE
);
EOF
}
insert_customer_data() {
sqlite3 "$1" << EOF
INSERT INTO customers (name, email) VALUES
('Alice', '[email protected]'),
('Bob', '[email protected]'),
('Charlie', '[email protected]');
EOF
}
select_all_customers() {
sqlite3 "$1" << EOF
SELECT * FROM customers;
EOF
}
# 使用例
create_customer_table my_database.db
insert_customer_data my_database.db
select_all_customers my_database.db
Python などのプログラミング言語を使用して、SQLite3 を操作するスクリプトを作成することができます。この方法により、より複雑な処理を行うことができます。
import sqlite3
def create_customer_table(db_path):
connection = sqlite3.connect(db_path)
cursor = connection.cursor()
cursor.execute("""
CREATE TABLE customers (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT UNIQUE
);
""")
connection.commit()
connection.close()
def insert_customer_data(db_path):
connection = sqlite3.connect(db_path)
cursor = connection.cursor()
cursor.executemany("""
INSERT INTO customers (name, email) VALUES (?, ?)
""", [
('Alice', '[email protected]'),
('Bob', '[email protected]'),
('Charlie', '[email protected]'),
])
connection.commit()
connection.close()
def select_all_customers(db_path):
connection = sqlite3.connect(db_path)
cursor = connection.cursor()
cursor.execute("SELECT * FROM customers")
for row in cursor.fetchall():
print(row)
connection.close()
# 使用例
create_customer_table('my_database.db')
insert_customer_data('my_database.db')
select_all_customers('my_database.db')
GUI ツール
SQLite3 を操作するための GUI ツールを使用することができます。GUI ツールを使用すると、視覚的に操作することができ、初心者でも簡単に操作することができます。
- シェル関数や Python スクリプトを使用する場合は、それぞれの言語の知識が必要です。
- GUI ツールを使用する場合は、ツールをインストールする必要があります。
sql bash sqlite