20 時間以上の Python コーディング経験があり、コマンドラインに慣れていない初心者プログラマーとして、Zed Shaw の「Learn SQL The Hard Way」を開いたところ、すぐに困惑しました。
演習 01で、Zedは次の最初のコマンドで最初のテーブルを作成します。
sqlite3 ex1.db < ex1.sql
ただし、これはコマンドラインで実行できず、「-bash: ex1.sql: No such file or directory.」というエラー メッセージが表示されます。最初は、この推奨コードを無視して次の手順に進みました。
sqlite3 ex1.db
SQLite version 3.7.15.1 2012-12-19 20:39:10
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> CREATE TABLE person (
...> id INTEGER PRIMARY KEY,
...> first_name TEXT,
...> last_name TEXT,
...> age INTEGER
...> );
コマンドラインで「ls -l」を実行すると、次のように表示されます。
-rw-r--r-- 1 thefifth staff 2048 Feb 15 15:23 ex1.db
しかし、私が望んでいて得られないのは次のとおりです。
$ ls -l
-rw-r--r-- 1 zedshaw staff 2048 Nov 8 16:18 ex1.db
-rw-r--r-- 1 zedshaw staff 92 Nov 8 16:14 ex1.sql
私はグーグルで検索し、同じ「name.db < name.sql」構文を実装するこのブログを見つけましたが、ここのコードをたどってもうまくいきませんでした。このスタック オーバーフローにも同様の構文がありますが、.sql を sqlite3 に変換するコンテキストで使用されます。
具体的には、これがネイティブの bash ターミナルで使用する "<" であるかどうか、およびその正しい使用に関する特定の基準を満たしていないかどうか疑問に思っています。また、.sql ファイルと .db ファイルの両方を作成する目的がわかりませんが、一方は他方よりもはるかに小さいようです。sqlite3 を間違ってインストールしたのかもしれませんが、問題なく動作しているようです。
ご協力いただきありがとうございます!