• 締切済み

データベースを使用して、SQLのデータを上書き

データベースを使用して、SQLのデータを上書きしたいのですが、 『m_control』テーブルの「controlid」にある同名データ('PRIMARY')があるため、エラーになります。 どうしたら上書きできるのか、対応方法を教えてください。

  • MySQL
  • 回答数1
  • ありがとう数0

みんなの回答

  • teuaitou
  • ベストアンサー率32% (10/31)
回答No.1

update文のwhere句に重複データのフィールド名とデータ値を書けば、そこに上書きされますよ。ってSQLの基本なのですが、それを解ったうえでの質問だったですか。 そんな、入門書の最初の方に書かれてそうなことは訊きたい訳じゃないのであれば、もう少し情報がないと回答できないですね。

kawanobe
質問者

補足

ご返信どうもありがとうございます。 詳しく説明しますと、TwitterBrainを使いたいのですが、 ロリポップ(ライト版)の場合、1つのデータベースしか使用ができません。 『m_control』テーブルの「controlid」に同名のデータが存在しているため、『Duplicate entry 'system_datasavepath' for key 'PRIMARY'』というエラーが発生しているようです。 -- -------------------------------------------------------- -- -- テーブルの構造 `m_account` -- CREATE TABLE IF NOT EXISTS `m_account` ( `accountcd` int(11) NOT NULL default '0', `accname` varchar(128) default NULL, `twitterid` varchar(128) default NULL, `oauth_token` varchar(128) default NULL, `oauth_token_secret` varchar(128) default NULL, `tweettime` varchar(128) default NULL, `mirrortime` varchar(128) default NULL, `dayflwnum` int(11) default '0', `minflwnum` int(11) default '0', `sort` int(11) default '0', `delflg` smallint(6) default '0', PRIMARY KEY (`accountcd`), KEY `i_account_delflg` (`delflg`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- -------------------------------------------------------- -- -- テーブルの構造 `m_control` -- CREATE TABLE IF NOT EXISTS `m_control` ( `controlid` varchar(64) NOT NULL default '', `ctrlgrpcd` int(11) default '0', `controlname` text, `serialno` int(11) default '0', `ctrlval` text, `ctrltype` text, `ctrlhelp` text, `bikou01` text, `bikou02` text, `bikou03` text, `bikou04` text, `bikou05` text, PRIMARY KEY (`controlid`), KEY `i_control_esp16` (`ctrlgrpcd`,`serialno`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- -- テーブルのデータをダンプしています `m_control` -- INSERT INTO `m_control` (`controlid`, `ctrlgrpcd`, `controlname`, `serialno`, `ctrlval`, `ctrltype`, `ctrlhelp`, `bikou01`, `bikou02`, `bikou03`, `bikou04`, `bikou05`) VALUES ('system_datasavepath', 10000001, 'データ保存パス', 10, '/home/[ハッスルサーバID]/public/www/pic/', '0:1:60:256:', '', '', '', '', '', ''), ('system_picwwwpath', 10000001, 'ファイル公開パス', 20, '/pic/', '0:1:256:60:', '', '', '', '', '', ''), ('system_error_mail', 10000001, 'システム責任者メールアドレス', 30, 'twitter-brain@yahoo.co.jp', '6:', '', '', '', '', '', ''), ('exhibit_fsz_max', 10000001, '商品写真アップロード可能ファイルサイズ', 40, '2048', '3:2048:1', '単位はKB', '', '', '', '', ''), ('day_flw_num', 10000002, '一日のフォロー数', 10, '20', '3:99999:0', '初期値', '', '', '', '', ''), ('min_flw_num', 10000002, '最低フォロワー数', 20, '0', '3:99999:0', '初期値', '', '', '', '', ''), ('flw_limit_num', 10000002, 'フォロー規定数', 30, '1000', '3:9999:0', '', '', '', '', '', ''), ('flw_max_per', 10000002, 'フォロー割合', 40, '1.1', '4:10:0:2', '規定数以上フォローする場合のフォロー数/フォロワー数の値', '', '', '', '', ''), ('flw_rel_hours', 10000002, 'フォロー解除時間', 15, '48', '3:9999:0', 'フォロー返しがなかった場合、フォローを解除するまでの時間', '', '', '', '', ''), ('flw_chk_days', 10000002, 'フォローチェック間隔', 17, '7', '3:9999:0', 'フォローアカウントからフォローされているかどうかチェックする間隔(日)', '', '', '', '', ''), ('neg_word', 10000002, '除外キーワード', 5, 'お断り 禁止', '0:0:60:256:', 'フォロー対象で除外するキーワード', '', '', '', '', ''), ('consumer_key', 10000003, 'API key', 10, '', '0:1:60:256:', '', '', '', '', '', ''), ('consumer_secret', 10000003, 'API secret', 20, '', '0:1:60:256:', '', '', '', '', '', ''); -- -------------------------------------------------------- -- -- テーブルの構造 `m_ctrlgrp` -- CREATE TABLE IF NOT EXISTS `m_ctrlgrp` ( `ctrlgrpcd` int(11) NOT NULL default '0', `ctrlgrpname` varchar(128) default NULL, `ctrlgrpspl` varchar(64) default NULL, `bikou01` text, `bikou02` text, `bikou03` text, `bikou04` text, `bikou05` text, PRIMARY KEY (`ctrlgrpcd`), KEY `i_ctrlgrp_ctrlgrpspl` (`ctrlgrpspl`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- -- テーブルのデータをダンプしています `m_ctrlgrp` -- INSERT INTO `m_ctrlgrp` (`ctrlgrpcd`, `ctrlgrpname`, `ctrlgrpspl`, `bikou01`, `bikou02`, `bikou03`, `bikou04`, `bikou05`) VALUES (10000001, '画像設定', '2000', '', '', '', '', ''), (10000002, 'フォロー設定', '1000', '', '', '', '', ''), (10000003, 'システム設定', '9999', '', '', '', '', ''); -- -------------------------------------------------------- -- -- テーブルの構造 `m_program` -- CREATE TABLE IF NOT EXISTS `m_program` ( `pgno` int(11) NOT NULL default '0', `pgname` varchar(128) default NULL, `pgfilename`

関連するQ&A

  • MySQLに、同名データを上書きする方法

    データベースを使用して、MySQLにデータを上書きしたいのですが、 『m_control』テーブルの「controlid」にある同名データ('PRIMARY')があるため、エラーになります。 長いので、貼り付けられませんが、実際に貼り付けた後、どこをどう修正すれば良いのかを、おわかりの方がおりましたら、教えてください。

  • すでにあるsqlファイルを使用して、データベースを作成する方法

    すでにあるsqlファイルを使用して、データベースを作成する方法 もらったシステム(html,php,sqlで構成されるシステム)を自分の環境で動かそうとしているのですが、データベースを作成できないため、先に進むことが出来ず困っています。 もらったシステムには、テーブルのsqlファイルや、そのテーブルに入れるデータのsqlファイルがありました。 わかりにくい文章ですいません。 どなたかご存じの方、ご教授お願いいたします。 OS: CentOS5.3 postgresql8.1.18 apache2.2.3 php5.1.6

  • SQLクエリでデータベースが壊れる?

    AccessアプリでSQL Serverデータベースを更新しています。 データベースをODBCデータソースとして登録して、AccessdeそのODBCデータソースへのリンクテーブルを作っています。 データベースが何回か壊れたのですが、AccessVBAから発行したリンクテーブルへのSQLクエリでデータベースが壊れるようなことはあるんでしょうか? あるとしたら、そのクエリを発行すると必ず壊れると思うんですが・・・。 同じAccessアプリを使っても、データベースが壊れない環境もありますし・・・。 データベースが壊れた原因がわからなくて困っています。 Windows 7、SQL Server 2008 R2 Express です。

  • データベースやSQL,PHPについて教えてください

    大学のレポート課題でわからないところがあったので困ってます。 1)データベースについて  ・定義したテーブルのテーブル名、列名、データ型について説明せよ  ・テーブルにデータを挿入するときに行われるSQL文を答えよ 2)PHPプログラムからデータを検索するときに行われるSQL文を答えよ この大きく分けて二点がよくわからず苦戦しています もしよければ教えてください、お願いします。

  • SQLを使ったデータの作成

    コマンドプロントを使用し、SQLでデータベースを作成しています。 大きなテーブルを複数作り、複数のデータの作成をしています。 1.テーブルの方の定義を行い、キー項目を決める。 2.データは、一つ一つの項目ごとに、データの型やサイズを決める。 3.いくつか検索をした際に、ちゃんと結果の違いが確認できるように、100レコード程度のデータを作成する。 の制約で制作しています。 SQLに触って、まだあまり経っていないためどうプログラムを組めばいいのか分かりません。    テーブルの意味などや、キー項目、などの言葉の意味もあまり理解出来てません。 例えば データベース:ONLAINGAME テーブル1:MEMBER テーブル2:WEAPON を制作し、MENBERの中に50件、WEAPONの中に50件データを作ればいいのでしょうか。 データの作り方も少し心配です。 create table MENBERl(age int, name varchar(20) , primary key (aa); 上記の文を打ち、insert into MENBER ( age, name) values(20, 'takasi'); と書けば、制約通りデータが格納できるのでしょうか? 分かりずらいとは思いますが、詳しいお答えお願いいたします。

  • ACCESS VBAでSQL Server使用

    ACCESS VBAでSQL Server使用しています。 データ量が多い場合、 リンクテーブルを張ってDocmdでJetデータベースエンジンを使う方法と SQL ServerにADOで接続してT-SQLを使用する方法ではどちらが早いでしょうか?

  • SQL文で、重複データの上書きはできますか

    一定範囲(複数)のデータを追加したい場合、 追加する時に、既に既存のデータがある場合は、 データを上書きし、無い時は、データを新規追加 する、ということをやりたいのですが、SQL文で、 そのような命令はあるでしょうか。 Excelで打ち込んだ、数件のデータを、データベース 用の別のExcelシートに一気に保存したい時に、 この問題が生じてしまいます。 (INSERT命令のみだと、すべて新規となるので、 重複データができてしまい、何が新規でなにが新規 でないかをいちいち区別し、処理を分けるのも 困難です)。 非常に初歩的かもしれませんが、お願いします(ちなみに、ExcelVBAで、SQLを使おうと思っています)。

  • SQLの書き方

    直前にテーブルに挿入したデータのprimary keyを取得するSQLはどう書けばいいのでしょうか? よろしくお願いします。

    • ベストアンサー
    • MySQL
  • ORACLEでのSQLについて

    SQLについて教えてください。 今、VBからORACLEデータベースにSQLを投げる処理を作っているのですが、 一つわからないことがあります。 例えば、アクセスでは、クエリで新しいテーブルを作成するという考え方がありますが データベースがORACLEでも同じようなことができるのでしょうか? 別に新しいテーブルを作成することに執着するわけではなく、テーブルのデータを削除 してから、そのテーブルにSQLにて引っ張ってきたデータを入れる という ものでもいいと考えています。そのやり方でもかまいませんので教えてください。 宜しくお願いします。 Oracle8.1.6 vb6

  • 難しいSQL

    別の掲示板に質問したのですが、難易度が高いのかしばらく回答が得られなかったのでこちらに質問してみます。(別の掲示板の方は質問を取り消しました。)ちょっと急いでいるのでどんなものでも構いません。SQLに詳しい方、ご教示お願い致します。環境は、MySQL5.1.33(MacOSX版)を使用しています。 以下のようなデータベースがあります。マスター系となるユーザテーブルと、それを参照するトランザクション系の買い物テーブルです。このデータベースから、「※連続して買い物をしたユーザをSELECTしたい」のですがそのようなことは可能でしょうか?可能であるとすると、どのようなSQLを書けばよろしいでしょうか? ※「連続して」とは、日付をまたがって、という意味です。 例)2009/06/12、2009/06/13 (1)ユーザテーブル mysql> desc user; userid, int(11), primary key username varchar(15) (2)買い物テーブル mysql> desc purchase; purchaseid, int(11), primary key userid int(11) purchaseid date 今、買い物テーブルに以下のようにデータがある場合 mysql> select * from purchase; 1, 3, 2004-01-02 6, 1, 2004-04-03 5, 2, 2008-04-05 4, 2, 2000-01-19 3, 5, 2004-01-01 2, 1, 2001-11-10 9, 5, 2003-12-31 8, 1, 2007-04-05 7, 3, 2004-01-03 mysql> select userid from ... とすると3, 5を抜き出すようにしたいです。(3は2004/01/02, 2004/01/03だから。5は2003/12/31, 2004/01/01だから。) このselect文の書き方を教えて頂きたいです。お手数をおかけしますがよろしくおねがいします。