既存のテーブル構造を新しいものに簡単にコピーする方法はありますか? (データは必要ありません。構造-> id INTEGER、名前varchar(20)など)
THX
次のようなコマンドを使用できます。
CREATE TABLE copied AS SELECT * FROM mytable WHERE 0
しかし、SQLiteの動的型付けにより、ほとんどの型情報は失われます。
元のテーブルと同じように動作する、つまり列の数と名前が同じで、同じ値を格納できるテーブルだけが必要な場合、これで十分です。
元の型とまったく同じ型情報が本当に必要な場合は、次のようにCREATE TABLE
テーブルから元のSQL sqlite_master
ステートメントを読み取ることができます。
SELECT sql FROM sqlite_master WHERE type='table' AND name='mytable'
SQLiteは、PK、デフォルト、およびインデックスを持つテーブルを複製できません。
別のツールによるハッキングが必要です。
シェルで、テーブル名をsedに置き換えます。
sqlite3 dbfile '.schema oldtable' | sed '1s/oldtable/newtable/' | sqlite3 dbfile
また、新しいテーブルを確認できます。
sqlite3 dbfile '.schema newtable'
主キー、デフォルトおよびインデックスは予約されます。
このコマンドがお役に立てば幸いです。
sqlite> .schema
CREATE TABLE [About](
[id],
[name],
[value]);
.schemaコマンドは、コマンドを入力してSQLiteインタープリターを手動でプログラミングすることにより、About-tableの構造を提供します。
CREATEブロックを貼り付けて実行し、テーブルに新しい名前を付けます。
sqlite> CREATE TABLE [AboutToo](
[id],
[name],
[value]);
.tablesコマンドにより、「コピー済み」の2つのテーブル(古いものと新しいもの)が表示されます。
sqlite> .tables
About AboutToo
追伸sqlite>は、SQLite.exeインタープリターを起動した後にコンソールに表示されるコマンドプロンプトです。取得するには、www.sqlite.orgにアクセスしてください