• ベストアンサー

SQLiteのテーブル名を変更したい

SQLiteで既存のテーブル名を変更し、テーブルのバックアップにしたいと考えています (後に元テーブル名で新しくCreate Tabelをします) 少し(情報の少ない)マニュアルを見ましたが 方法(それを実行させるSQL)が見つけられません アドバイスをよろしくお願いいたします。 あるいは、DB内でテーブルをコピーする方法があるならば それで代用できるかもと考えています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

すぐに見つかりましたけど? http://www.sqlite.org/lang_altertable.html バックアップという意味なら、SQLiteのデータベースは1個のファイル中にあるのだから、そのファイルごとコピーしておくのが簡単かも。

Yambal_net
質問者

お礼

あらら 失礼しました... 新Tableにデータを持っていきたいので ファイルを分けるのはちょっと難しいのかな と思っています

その他の回答 (1)

noname#223623
noname#223623
回答No.2

一番簡単なのは"ALTER TABLE"を使う方法。  SQLite入門 - テーブルの変更  http://www.dbonline.jp/sqlite/table/index9.html バージョンによってはALTER TABLEが使えないので新しいテーブルを作ってデータを移行するしかない。以下はテストで実行してみた例。  $ sqlite db1  SQLite version 2.8.17  Enter ".help" for instructions  sqlite> create table t1(a int, b text);  sqlite> insert into t1 values(1, 'foo');  sqlite> insert into t1 values(2, 'bar');  sqlite> insert into t1 values(3, 'hoge');  sqlite> select * from t1;  1|foo  2|bar  3|hoge  sqlite> create table t2(a int, b text);  sqlite> insert into t2 select a,b from t1;  sqlite> select * from t2;  1|foo  2|bar  3|hoge  sqlite> このあとはdelete文でレコードを削除、もしくはdrop tableでテーブルごと削除してください。

関連するQ&A

  • sqlite+phpでのテーブル作成

    こんばんは php+sqlite+pdoで掲示板を作ろうと思っているのですが - $db = new PDO('sqlite:test555.db','', ''); $query = "CREATE TABLE テーブル名 (テーブル内容)"; $db->query($query); //以下掲示板表示処理など - とした場合、すでにテーブルが存在していてもエラーが出ずに掲示板のデータを表示してしまいます。 掲示板の機能としてはこれで動いているので問題ないのですが、プログラム的に掲示板にアクセスするたびにCREATE TABLEを実行しても良いものなのでしょうか? 出来ればテーブルが存在しない場合のみにCREATE TABLEを実行したいのですがその場合はどのように書けばいいのでしょうか?

    • ベストアンサー
    • PHP
  • SQLiteのデータベースについて

    PHP初心者です。以下のSQLiteより作成するデータベースについて教えてください。 $DB = sqlite_open('db1.db'); $sql="create table tables(id integer ,name,texts)"; $result=sqlite_query($db,$SQL); 上記、プログラムにより、同ディレクトリに、db1.dbが作成されますが、このデータベース情報はどのようにして、閲覧するのでしょうか(MS-ACCESS、SQLのように簡単に閲覧できないのか)。主キーやテーブルの名前またはフィールドの名前の変更、データ一覧閲覧などどのようにするのでしょうか。 環境は、Windows環境で、PHP4を使用しております。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • phpでテーブルを作る際変数によってテーブル名を変えたいです。

    phpでテーブルを作る際変数によってテーブル名を変えたいです。 文字列$nama(tarou,jirou等)、 整数$iの中身によって作るテーブル名が tbl_tarou_1、tbl_tarou_2、tbl_jirou_5と変わるプログラムを作りたいのです。 当方初心者なので以下のプログラムを改変するような形でお答えいただけないでしょうか。 回答よろしくお願いいたします。 $db = sqlite_open("db"); $query = "CREATE TABLE tb(xyz VARCHAR(20))"; $result = sqlite_query($db,$query_statics); sqlite_close($db);

    • ベストアンサー
    • PHP
  • SQLite 既存テーブルを他のDBにコピーしたい

    (疑問点1) タイトルのとおり、既存DBのテーブルを新たに作成したテーブルにそっくりコピーしたいのですが なにかよい管理ツールはあるでしょうか? ・ただし、既存DBについては**.dbというファイルがあるだけで、それ以外の情報はありません。 ・このDBに接続して内容を参照しているページがありますが、そのページのエンコードがEUC-JPで  ある いまわかっているのはこの2点だけです。 Navicat fro SQLite(日本語)試用版をインストールして既存DBへのHTTP接続にはなんとか成功したのですが、上記の対応の必要性にせまられており困っています。 (疑問点2) なお、このツールで既存DBのテーブルデータを参照すると日本語部分は文字化けで読めません。 ツール側の設定なのか、既存DBの文字コードになにか原因があるのかもわかっていません。 既存DBのテーブルに対しこのツールでエクスポート(テキストファイル形式)を行い、エディタで テキストファイルを開くと、やはり日本語は文字化けで読めません。エディタ側で文字コードを 変更しても読めません。このまま新DBにインポートしても日本後への対応はうまくいかないように 思い、困っています。 どなたか、Navicat fro SQLite(日本語)試用版の操作でも、それ以外の方法でも、どちらでも 対処方法をご存じでしたらお願いいたします。

  • SQlite

    SQLiteを使って メールを保存するデータベースを作っています。 以下のようになっています。  さらに、 アドレス帳を作りたいのですが 新たにデータベースを開くのか 同じデータベースで別のテーブルを開けばよいのかわかりません。 ご存知の方よろしくお願いします。 また、 C++からSQLiteを扱う上での参考書などもありましたら 教えてください。 rc = sqlite3_open(".\\mailbox\\SQMail.db", &db); if( rc ){ AfxMessageBox("Can't open database:", MB_OK); sqlite3_close(db); return; } rc = sqlite3_exec(db, "create table MailTbl (id INTEGER PRIMARY KEY, attach varchar(20), subject varchar(120),addressfrom varchar(80),addressto varchar(80),date varchar(80),size integer,priority integer, read integer, state integer, alldata blob);", callback, 0, &zErrMsg); if( rc!=SQLITE_OK ){ // AfxMessageBox("SQL error:", MB_OK); sqlite3_free(zErrMsg); }

  • 別のDBからテーブルをコピーする方法

    SQL Server2005 Express Edition を使っています。 異なるDB間(同じコンピュータ内)で、テーブルをコピーしたいの ですが・・・ コピー元DB名:DB_A コピー元テーブル名:dbo.顧客 コピー先DB名:DB_B テーブルのコピーは select * into ・・・ from ・・・ を使えばできそうですが、別DBの場合の方法がわかりません。 お教えいただければ幸いです。 よろしくお願いいたします。

  • PerlでSQLiteのデータテーブルを作成し

    PerlでSQLiteのデータテーブルを作成し、作成したテーブルへデータを追加するようにしたいのですが、 下記のように作成し、実行すると、 テーブルの作成のみ、もしくは、既存のテーブルへのデータの追加のみは可能なのですが、 両方処理させると、テーブルの作成のみされて、作成されたテーブルの中身はカラのままです。 #データベースに接続 $dbh = DBI->connect("dbi:SQLite:dbname=c:\\database\\tyumon.db"); open (DATA,"c.dat"); $data = <DATA>; close(DATA); $data = $data+1; $table = "user"; $table .= $data; #テーブル作成実行 $hst = $dbh->do("CREATE TABLE '$table'(name text,area text,tel text,mail text,jikan text, hoka text)"); #レコードの追加(INSERT文の実行) $st = $dbh->do("insert into '$table' values('$data','$name','$area','$tel','$mail','$jikan','$hoka')"); 「c.dat」には、カウントされた数字が入っています。 テーブル名は「user」+カウント数字で作成しています。 データベースと、CGIの勉強を兼ねて作成しているもので、 根本的な間違いなどあるかもしれません。 どなたか、ご指摘いただければ幸いです。

    • ベストアンサー
    • CGI
  • SQLiteから制約条件の取得

    SQLiteにある特定のテーブルから、各フィールドの制約条件またはCreate文を取得したい。 SQLで実現できないでしょうか?

  • PerlからSQLiteをうまく扱えません

    以下のような感じで、 Perlから、SQliteのデータベースと、そのテーブルを作成し INSERTさせてみるのを組んでみたのですが うまく行かないようです・・・。 何が原因なのかどうすればうまくいくのか、教えていただけないでしょうか。 よろしく御願いします。 #!/usr/bin/perl use DBI; $dbfilename = "./testdb"; &dbcon; $sth = $db->prepare("INSERT INTO user VALUES(\'1\',\'abc\')"); $sth->execute; $sth->finish; &dbuncon; exit; sub dbuncon { $db->disconnect; } sub dbcon { $makedbflag = '0'; unless (-f $dbfilename) { $makedbflag = "1"; } $db = DBI->connect("dbi:SQLite:dbname=$dbfilename","","",); if($makedbflag eq "1") { &dbmaketable; } } sub dbmaketable { $sql = "CREATE TABLE user (id, name);"; $db->do($sql); }

  • yahooウィジェットのSQLiteに関して

    どうしてもわからず、質問させてください。 INSERTの所で 1 near "[i]" :syntax error と出てしまいます。 配列にはちゃんとデータが入っていることを確認しました。 どこがおかしいのかお分かりになる方すいませんが、お願いします。 またyahooウィジェットのSQLiteはトランザクションは使えるのか知っている方いましたら合わせてお願いいたします。 ▼ソースは以下のようなものです var db = new SQLite(); //オープン db.open( "オーブンファイル名" ); //テーブル存在確認 var result = db.query( "SELECT * FROM sqlite_master WHERE type='table' AND name='テーブル名'" ); if ( result.getRow() == null ) { result.dispose(); db.exec( "CREATE TABLE テーブル名(id int(10),name varchar(255))" ); FileRead( "ファイル読み込み" ); for (var i in lineArray) { alert(lineArray[i]); db.exec( "INSERT INTO テーブル名(id, name) VALUES(i, lineArray[i])" ); } } db.close;

専門家に質問してみよう