私はSQL の本を読んでいて、著者は Sqlite3 を使用しています。
本の中で、著者は次のように入力するように言っています。
sqlite3 -echo something.db < some.sql
問題は、何も端末にエコーアウトされず、'<' リダイレクト コマンドから作成されたデータベースさえないことです。
これで何が起こっているか知っている人はいますか?
something.db
既存のデータベースです。< some.sql
そのファイルからデータを取得し、sqlite コンソールに書き込むことを意味します。したがって、両方のファイルが存在する必要があります。
something.db
有効な l sqlite3 データベース ファイル (または空または存在しないファイル) である必要があります。some.sql
コマンドを含むテキスト ファイルである必要があります。
パラメータは、-echo
実行前にコマンドを出力する必要があることを指定します。
実際、あなたが示したコマンドは、SQL ダンプから新しいデータベースを作成する適切な方法です。
SQL ファイルの内容 ( ) を表示していただけますcat some.sql
か? 説明されている動作を再現できる唯一の方法は、sqlite に空の sql ファイルを供給することです。
次のコマンドを試して、同じ結果が得られるかどうかを確認してください。
$ cat <<EOF > test.sql
> create table test1 (f1, f2, f3);
> insert into test1(f1, f2, f3) values ("foo", "bar", "baz");
> EOF
$ sqlite3 -echo test.db < test.sql
create table test1 (f1, f2, f3);
insert into test1(f1, f2, f3) values ("foo", "bar", "baz");
$ file test.db
test.db: SQLite 3.x database