テスト用のテーブルを作成する方法

このQ&Aのポイント
  • テスト用のテーブルを作成する方法をまとめました。環境はFedora Core3, Mysql3系の最新版です。テーブルの作成方法やデータの追加方法について解説しています。
  • テスト用のテーブルを作成する際に効率的な方法について考えてみました。for文を使用することで簡単にレコードを追加することができます。また、テーブルに対してユニークなIDを振る方法についても紹介しています。
  • テスト用のテーブルを作成する際にシェルスクリプトを使用する方法をまとめました。シェルスクリプトを使用することで自動的にレコードを追加することができます。具体的なスクリプトの書き方についても解説しています。
回答を見る
  • ベストアンサー

テスト用のテーブルを作りたい(10,000レコード)

環境はFedora Core3, Mysql3系の最新版です。 数個程度のレコードでは検索速度等がわからないので、1レコード目のデータを元に、10000レコードを追加しようと思います。 +----------+----------+---------------------+-----------------+-------------------+----------+ | id | clear | mail_address | home | maildir | name | +----------+----------+---------------------+-----------------+-------------------+----------+ | test0001 | test0001 | test0001@example.jp | /vmail/test0001 | test0001/Maildir/ | test0001 | +----------+----------+---------------------+-----------------+-------------------+----------+ このような感じで「test0001」のレコードがあります。 これをtest9999までのユーザで追加していきたいのですが、 どうすれば、効率よくデータを埋めることができるでしょうか? 私の知識では、シェルでfor文を使って2から9999までインクリメントして・・・「0002」ってどうかけばいいんだろう? ぐらいなレベルですので、シェルは書くことができません。 なにか良い方法はありませんでしょうか?

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

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

  • ベストアンサー
  • tabikin
  • ベストアンサー率62% (5/8)
回答No.1

Windows環境も使えるのなら。。。 データをファイルにエクスポートし、拡張子を「.csv」にリネームしてMSエクセルで開けるようにします。データが個々のセルに分割して表示されたら、後はセルをドラッグすれば10000レコードまで自動作成されますよね。 このデータファイルをインポートするだけでOKです。 SELECT INTO OUTFILE(エクスポート) LOAD DATA INFILE(インポート) をGoogle等で検索して見て下さい。 MySQLの管理ツールにphpmyadminを使用しているなら、データファイルのエクスポート、インポートはGUI操作で簡単に出来ますよ。(phpも必要になりますが。)

apricot777
質問者

お礼

phpmyadmin + EXCELにて10000行のデータをインポートさせることができました。とても便利ですね。ありがとうございました。

関連するQ&A

  • MySQLでのレコード移動(オートインクリメント)

    MySQL 5.1 (win)で以下の流れで「オートインクリメントをリセット後」、レコード移動したいです。 ※idはauto_incrementしています。 1.既存のレコード一覧からレコード2を削除 id name comment 1 tanaka こんにちは ※削除 3 suzuki こんにちは 4 nakamura こんにちは  5 kimura こんにちは 2.この後、idのAUTO_INCREMENTを「1」にリセット。 3.新規レコードを追加 id name comment 1 tanaka こんにちは 3 suzuki こんにちは 4 nakamura こんにちは  5 kimura こんにちは 2 sato こんにちは ←idが空き番の2から始まり、このようにレコードが最後に追加されますよね? この後これをレコード1とレコード3の間に移動させたいのですがそんなSQL文はありますか? ***最終結果*** id name comment 1 tanaka こんにちは 2 sato こんにちは ←ココに移動 3 suzuki こんにちは 4 nakamura こんにちは  5 kimura こんにちは よろしくお願いします

    • ベストアンサー
    • MySQL
  • 通し番号が一番若いレコードの削除

    お世話になります。 Linuxを使ってMySQLのレコードが追加された時に自動で処理をする スクリプトを作っています。 データベースはtestで、 データベースのフィールドは、name=varchar(16), password=varchar(16),date=TIMESTAMP, number=int AUTO_INCREMENT となっています。 データを一個ずつ処理したいので、 select Name from test WHERE number=(select MIN(number) from test) としてみた所、上手く希望のデータが取り出せたので、 今度は用がなくなったデータを削除する為に、 delete from test WHERE number=(select MIN(number) from test) としてみたところ、 You can't specify target table 'test' for update in FROM clause と出て、エラーになりました。 エラー内容はサブクエリの結果が変わるようなクエリは発行できないと 言う感じでした。 上手く処理をする方法を思いついたと思ったのですが、このようになって、 どうしたものかと途方に暮れています。 上手く処理をする方法をご存知の方が居られましたら是非御教授いただきたくお願いします。

    • ベストアンサー
    • MySQL
  • MYSQLのレコードを上書きしたいのですが…

    phpからMYSQL5に接続して以下のようなデータベースを作りました。 no name comment ←カラム名 1  山田 起きる 2  山田 叫ぶ 3  山田 寝る これを上書きして、 no name comment 1  山田 食べる 2  山田 遊ぶ 3  山田 寝る というようにレコードを更新したいのです。 しかし、どうやっても1、2、3の後に4、5、6と続いてしまいます。 「no」カラムにはauto_increment+primary keyを設定しています。 phpで構文を送る前に mysql_query("alter table db1 auto_increment=0"); を設定してみたり、 mysql_query("insert into db1 (name,comment) value ('山田','$comment')"); や mysql_query("replace into db1 (name,comment) value ('山田','$comment')"); を試してみましたが、上手く行きませんでした。 現在は、 mysql_query("delete from db1"); mysql_query("alter table db1 auto_increment=0"); ---php処理--- mysql_query("insert into db1 (name,comment) value ('山田','$comment')"); というように、二度目の書き込みを行う前に一旦テーブル内のレコードを すべて削除して書きなおすという方法を取っています。 しかし、数が多くなると一旦削除する作業を行うと処理が遅くなってしまうと思いますので、上書きしてデータベースを更新したいと思っているのですが、どのようにすればよいでしょうか?

    • ベストアンサー
    • MySQL
  • DBから抜き取ったデータを10レコードずつ表示する方法

    データベース(MySQL)にデータを置きPHPでデータを表示しています。 しかしデータが大量になってしまったので10レコードずつ表示したいと思っています。各レコードにはauto_incrementなどで番号などの目印はつけていません。 この場合、引数で?page=1とした場合、はじめのレコードから10番目のレコードを表示し、page=2となれば11番目から21番目のレコード....といった感じにするにはどうしたらよいのでしょうか?可能なのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • テーブルにレコードを追加するサーブレット。

    HTML画面からservletに接続してMYSQLにてつくったデータベースのテーブルに レコードを追加するプログラム(servlet)を作っています。テーブルを表示させるservlet(ext_db5_2_1.java)と、テーブルにレコードを追加して前出のservlet(ext_db5_2_1.java)を呼び出しテーブル表示をさせるservlet(ext_db5_2_2.java)をつくってます。 windows2000Professional, j2sdk1.4.0_01, MySQL3.23.47, tomcat3.3.1 テーブルにレコードを追加するサーブレット(ext_db5_2_2.java)の問題箇所。 // データベースに追加する値を取得 String number = request.getParameter("number"); String name = new String( request.getParameter("name").getBytes("8859_1"), "JISAutoDetect"); String from_pref =new String( request.getParameter("from_pref").getBytes("8859_1"), "JISAutoDetect"); // SQLを実行して、データベースに追加する StringBuffer buf = new StringBuffer(); buf.append("INSERT INTO OOIWA_SEM ("); buf.append("NUMBER, NAME, FROM_PREF) "); buf.append("VALUES ("); buf.append(number); buf.append(",'"); buf.append(name); buf.append("','"); buf.append(from_pref); buf.append("')"); stmt.executeUpdate(buf.toString()); // データベース表示するために、RequestDispatcherを取得 ServletContext cx = getServletContext(); RequestDispatcher rd =                          cx.getRequestDispatcher("/netjv/servlet/shuwa.ext_db5_2_1");

  • 同一テーブル内で違うフィールドにデータをコピー

    ryomaniaと申します。 MySQL3.23.58を使用しています。 質問の内容なのですが、NO、CNO、NAMEというフィールドを持つテーブル顧客があります。 NOにはauto_incrementで連番の数字が自動で入ります。CNOにはNOと同じ数字を入れたいと思っています。但し最初は数字の0が入っています。NAMEには名前が入っています。 例: NO | CNO | NAME 1 | 0 | test1 2 | 0 | test2 3 | 0 | test3      ・      ・      ・ といった感じです。この状態からupdate構文などを使用して、もしCNOが0であればNOのデータをCNOにコピーするということは可能でしょうか?出来れば複数の行を一度に行いたいと思っています(1000~3000行くらい)。 googleなどで調べては見ましたが答えというかいいヒントが見つかりませんでした。 変な言い回しになっているかもしれませんがよろしくお願いします。

    • ベストアンサー
    • MySQL
  • insertを用いてテーブルにレコードを追加することができるのにもかか

    insertを用いてテーブルにレコードを追加することができるのにもかかわらず、load data infile を用いるとerror1366と表示されてしまいます。解決方法を教えてください。 Windows7 mysqlは最新版を使っています。 インストールしたそのままの状態だと、insertを用いて日本語を挿入しようとするとerror 1366と出てしまってましたが、my.iniを書き換えることによってinsert table1 values (1,'ああ');といった操作でエラーが出ることはなくなりました。 しかしcsvファイルをload data infileを用いてインポートしようとすると、またerror 1366が出てしまいました。 インポートしようとしたファイルには日本語が書かれています。 英字だけのファイルを同様にインポートすると、エラーは出ませんでした。 <table1> id int(15) name varchar(255) 1,a 2,b 3,asdf … はインポート可能 。また insert table1 values (1,'あ'); も正常に動作。 1,あ 2,い … をインポートするとエラー。 これができないと先に進めません・・・ ご教授お願いします。

  • CRON で シェル を動かしたい

    Fedora Core で バックアップを取るため夜にJOBを実行させたく思っています。調べた所crontabでスケジュールできるとの事なのでテストをしているのですがうまくいきません。 1. mkdir /home/postgres/BKUP/test このコマンドをcrontab -e に直接書くと狙った時間にtestフォルダが作成されます。 2. バックアップを取る際はもう少し色々やることになると思うのでシェルにして実行させました。ここではテストなので先ほどと同じ分をシェルに書いてcrontab -eでスケジュールしますが作成されません。 ***シェルの内容*** #!/bin/sh mkdir /home/postgres/BKUP/test *********************************** ・/var/log には履歴がかかれていました。 ・シェルには全ての権限をつけました。(777) 何がいけないのでしょうか?教えてください。

  • 1万件のレコードの追加方法、主キーは億単位で不規則

    テスト用のテーブルを作りたいと思っています。しかし、主キーの部分が実際とはかけ離れた状態になってしまいます。 フィールド数が複数あり、同じ値でも構わないので1万件分のレコードを追加したいです。 やり方としては、 <1>主キーのフィールド以外の全部のフィールドを作ってデータを入れます。 <2>そしてから、INSERT INTO `aaa` SELECT * FROM `aaa`を1万件超えるまで繰り返し実行。 <3>主キーのフィールドをauto_increment指定して追加します。 <4>1万を超えるフィールドを削除するためにDELETE FROM `aaa` WHERE id>10000を実行 ※実際には主キーにauto_incrementを入れません。 ※実際には主キーのデータは数千万~億単位(89234521や000455839)の数字(型はBIGINT)で、増加の仕方はまちまちです。 auto_incrementを使わず、数千万単位の数字で、増加の仕方もまちまちな主キーのデータを追加する方法はないでしょうか。

    • ベストアンサー
    • MySQL
  • レコード操作ツール探してます

    windowsで動くレコード操作ツールありませんか^-^?(追加/更新/削除できるもの) よろしくお願いします。 1)Access2000のリンクテーブルやパススルークエリ 2)mysql.exe でもそれなりにできるのですが、もーーーと便利なソフトウェア探してます。 1)Access2000のリンクテーブルは、定義したデータベースにprimary keyがないとデータ更新できない... 2)mysql.exe コマンド打つのめんどい ※かねやんMySQLAdmin.exeでいけるかと思いましたが、レコードいじれませんでした。

    • ベストアンサー
    • MySQL