• 締切済み

Javaの質問です。

ファイルの中身を抽出し それをmysqlのテーブルの中の要素にそれぞれ登録する といった処理をおこなっています。 現在はArrayListでファイルの中身を一行ずつ抽出することができましたがそれぞれ 抽出した要素を適切なカラムにインサートする といった方法が分かりません。 例: 抽出するファイルの中身    INSERTするテーブルのカラムはidとnameがあります 001,山田              002,田中 現在はカンマ区切りで1つずつList内に格納できています。 このファイルの中身の001をidへ、山田をnameへとINSERTしたいです。

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

みんなの回答

回答No.1

とりあえず JDBC executeUpdate INSERT あたりで検索してみてください。 JavaでデータベースにINSERTする基本的な方法がわかるかと思います。

関連するQ&A

  • Javaの質問です

    javaでリストの比較をしたいと思っています。 ファイルAの中身を抽出したものをArrayListで格納しました。そして次にファイルBの中身を抽出しました。 ファイルBで抽出したものとファイルAのリストの中身を検索し一致しているものがあったら ファイルBの中身の数値を追加したいと思っています。 ファイルAの中身 1,田中 2,山田 3,加藤 この中身をListにしたのが↓ ファイルAのList(カンマ区切り) [1][田中] [2][山田] [3][加藤] ファイルBの中身 1 test 100 となっており 一致したらファイルAに追加したい数値とはファイルBでいう100という数字です。 どうやって2つのものを比較をし検索したらいいのでしょうか? Mapというものを見つけたのですがこの例でいったらどのように書けばいいのでしょうか... よろしくおねがいしますっ

  • javaでの質問です

    public class Test{ //Aファイルの抽出 private static BufferedReader lstReader(BufferedReader lst1){ try{ String line = ""; while ((line = lst1.readLine()) != null){ String[] lins = line.split(","); Readbranch(lins); } }catch(IOException e){ System.out.println(e + "ファイルが存在しません"); } return null; } //ファイルBの抽出 private static BufferedReader lstReader2(BufferedReader lst2){ try{ String line2 = ""; while((line2 = lst2.readLine()) !=null){ String[] lins2 = line2.split(","); Readcommodity(lins2); } }catch(IOException e){ } return null; } //ファイルCの抽出 public static List<String> lstReader3(BufferedReader lst3){ String[] rcds = new String[3]; int i = 0; try{ String rcdline = null; i=0; while((rcdline = lst3.readLine()) !=null){ rcds[i] = rcdline; i = i+1; } Lists(rcds); }catch(IOException e){ } return shukei; } //抽出したCファイルの保持。 public static List<String> Lists(String[] rcds){ List<String> rcd = Arrays.asList(rcds); System.out.println(rcd.get(0)); //System.out.println(shukei); return null; } //抽出したAファイルの保持。 private static List<String> Readbranch(String[] line){ List<String> brlst = Arrays.asList(line); return null; } //抽出したBファイルの保持。 private static List<String> Readcommodity(String[] lins2){ List<String> comlst = Arrays.asList(lins2); return null; } //メイン public static void main(String[] args){ try { //Aファイルオープン BufferedReader lst1 = new BufferedReader(new FileReader("branch.lst")); lstReader(lst1); //Bファイルオープン BufferedReader lst2 = new BufferedReader(new FileReader("commodity.lst")); lstReader2(lst2);    //Cファイルオープン     BufferedReader lst3 = new BufferedReader(new FileReader("00000001.rcd"));     lstReader3(lst3); } catch (FileNotFoundException e1) { e1.printStackTrace(); } } } 現段階でできているコードは異常です。 目的はまずファイルA、Bを読み込み中の要素を取り出しておく、次にファイルCを読み込み同じように要素を取り出し ファイルA、ファイルBのと比較をし一致している要素があればファイルCの要素をそれぞれ一致したファイルA、Bの要素に追加したいのです。 例) ファイルAの要素 1,山田 2,佐藤 3,加藤 ファイルBの要素 Test,東京 Test2,埼玉 ファイルCの要素 1 Test 1000000 と各ファイルの中身がこのような場合 ファイルCの1行目の1とファイルAの1 が一致しているのでファイルCの3行目の1000000を追加します。 追加後のファイルA 1,山田,1000000 2,佐藤 3,加藤 そしてファイルCの二行目Test もまたファイルBのTestと一致しているのでファイルAと同じように3行目を加えます。 一致するものが無い場合は終了させます。 現状はA、B各ファイルをカンマ区切りで分割しListに入れています。ファイルCは1行ずつ配列にいれるところまではできましたが どのように比較をしたらいいのか分かりません どうかよろしくおねがいします

  • 複数テ-ブルでのデータ抽出について

    2つの関連するテーブルでの検索がうまくいきません。 検索の条件として、table-1のflag=1に対応する顧客の table-2の最後の日付のデータのみ取得して ☆抽出結果のようにしたいのです。 (そのため、table-1の顧客の「3 田中」さんとそれに関連する データは検索の対象から外れます。) MySQLのバージョンは5.0を使っていますので、サブクエリーも 含めていくつかのパターンでかなり悩みましたが、どうもうまく いきません。 ご存知の方よろしくご教授の程お願い致します。 ☆table-1の内容 id, name , flag --------------------------- 1 山田  1 2 鈴木  1 3 田中  0 ☆table-2の内容 no,id, date  , content --------------------------- 1 1 2007-01-01  本 2 1 2007-02-01  ノート 3 1 2007-03-01  ペン 4 2 2007-01-01  消しゴム 5 2 2007-02-01  本 6 3 2007-01-01  ファイル 7 3 2007-02-01  ペン ☆抽出結果 no,id, date  , content --------------------------- 3 1 2007-03-01  ペン 5 2 2007-02-01  本

    • ベストアンサー
    • MySQL
  • 次の条件を満たすSQL文をご教示下さい。

    テーブル名: list no | first_name | last_name | comment ----+------------+-----------+--------- 1 | 太郎 | 山田 | ほげ 2 | 次郎 | 田中 | ふが 3 | 花子 | 山田 | ぴよ 4 | 三郎 | 佐藤 | ぴよ 5 | 太郎 | 山田 | ぴよ 6 | 次郎 | 田中 | ふー 7 | 三郎 | 佐藤 | ふー 8 | 花子 | 山田 | ふー 上記の表から同じ”last_name”を持つ人の”first_name”と”last_name”を重複無しで抽出する(下記のような結果)SQL文は作成可能でしょうか。 結果 first_name | last_name ------------+----------- 太郎 | 山田 花子 | 山田 宜しくお願いします。

  • 抽出したデータの結合

    困ってる点があります。 抽出したフィールドの文字列を結合させるにはどうしたら良いでしょうか。 例) studentテーブルに「id」「name」という二つのカラムがあるとします。 抽出したidとnameをスラッシュ(/)を挟んで結合したいです。 select id,name from student →このSQLを実行すると 「001,相沢」が出力されるとすると 「001/相沢」となるように抽出したいと思っております。 SQLが初心者なものでどなたか教えてください。 よろしくお願いいたします。

  • またしてもjava.until.Mapに関してです

    いつもお世話になっております。以前質問したjava.until.Mapに関してですが、以下のプログラムのjava.until.List部分を変えるとどういった風になるのでしょうか? 何卒ご回答よろしくお願い致します。 class CustomerManager { public static void main(String[] args){ CustomerManager manager = new CustomerManager(); manager.addCustomerCard( "山田一郎"); manager.addCustomerCard( "鈴木太郎"); manager.addCustomerCard( "田中次郎"); manager.printAllInfo(); } private List<CustomerCard> customers = new ArrayList<CustomerCard>(); private int index = 0; public void addCustomerCard(String name){ customers.add(new CustomerCard(1 + index,name)); index++; } public void printAllInfo() { for(CustomerCard cc : customers){ System.out.print("ID =" + cc.id + ","); System.out.println("名前 =" + cc.name); } } } class CustomerCard { String name; int id; public CustomerCard(int id,String name){ this.name = name; this.id = id; } public String getName(){ return this.name; } }

    • ベストアンサー
    • Java
  • INSERT INTOに関しまして。

    $sql = "INSERT INTO テーブル名(name,day,kg)VALUES('','$day','-1')"; 現在このようなSQL文でINSERTしていますが、データベース内にあるカラムname全てに対してINSERTするにはどうすれば良いでしょうか??現在のSQL文ではそれができず、nameが空欄の状態で更新されてしまいます。

    • ベストアンサー
    • PHP
  • MySQLで複数のSELECT文を1文にまとめたい

    以下のようなテーブル table1 があります。 ******************* table1 ******************* Name, Kyouka, Score, ID ******************* 山田, 国語, 92, 10001 鈴木, 国語, 71, 10002 田中, 国語, 89, 10003 山田, 数学, 65, 10004 鈴木, 数学, 69, 10005 杉田, 英語, 96, 10006 山田, 英語, 63, 10007 田中, 英語, 76, 10008 ... ******************* カラムIDはPRIMARYを指定しています。 カラムScoreはインデックスを作成しています。 このテーブルで、「IDと教科」を指定したときに、以下の2つのデータを得たいと思っています。 (1) IDに対応する名前と、その教科中の順位 (2) その教科のレコード数 具体例としては、例えば「ID=10001、教科=国語」を指定したときに、「山田、3人中1位」というような情報が得たいです。 (「ID=10001、教科=英語」のようなおかしな組み合わせは指定しないようになっています。) (1) は、以下のようにして名前と順位を得る事が出来ました。 SELECT Name, (SELECT COUNT(*) + 1 FROM table1 b WHERE b.Score > a.Score and Kyouka='国語') AS rank FROM table1 a WHERE ID='10001' ORDER BY Score DESC; (2)は、以下のようにして特定の教科のレコード数を得る事が出来ました。 SELECT COUNT(*) FROM table1 WHERE Kyouka='国語'; しかし、実際にはレコード数が大量にあり、頻繁にこの検索を実行する予定なので、負荷が心配です。 出来るだけサーバーの負荷を減らすために、1回のSELECT文の実行で(1)と(2)をどちらも実現できるような方法はないでしょうか。 また、このテーブルでインデックスを作成しているのはIDとScoreのみですが、より負荷を減らすにはKyoukaにもインデックスを作成した方が良いでしょうか。 何卒、よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • ストアド内でカラム名一覧を取得

    =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ストアド内でカラム名一覧を取得、カンマで繋げてひとつの変数にまとめたい。 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 現在開発でストアドを使用する機会があり、そこで不明点が発生し悩んでおります。 以下、現状と質問です。 ■SQL SERVER 2000 ■テーブル(※)のカラム名一覧を取得し、  カラム名をカンマで繋げてひとつの変数に格納したいと思っています。  ※先の処理でカラムを取得したいテーブルをSELECTしており、  対象のテーブル名を変数に代入しています。  カラム一覧を取得するにあたり、以下のようにカーソルで習得し、  FETCHでカラム名を変数に格納しようと考えていましたが、  「'対象テーブル名'」には変数がいれられないので、どうしようかと悩んでいます。  DECLARE CURS_test CURSOR FOR   SELECT name FROM dbo.syscolumns   WHERE id IN   (SELECT id FROM dbo.sysobjects WHERE name = '対象テーブル名')   ORDER BY id, colid;  「sp_executesql」を使用してselect文を流そうとしたのですが、  複数ある列名を取得して、上記で記載しましたように  カラム名をカンマで繋げてひとつの変数に格納する方法がわかりませんでした。  こういった場合、どのように考えて、どのように書けばよいのでしょうか。  まだ触り始めたばかりで、わからないことがわかっていない部分もあり、  質問内容でわかりにくい部分がありましたらご指摘いただければと思います。  どうぞよろしくお願いいたします。

  • IDENTITY列の複数テーブルへのINSERT

    テーブルAへINSERTをした場合のIDENTITY列の値を 同じトランザクション内で テーブルBの別のフィールドへINSERTしたいのですが、 どのようにSQLを書けばよいのか、困っています。 どうか、ご教示お願い致します。 INSERT INTOTABLE_A (NAME_A) VALUES ('あいうえお') ↓ INSERT INTOTABLE_A (A_ID,NAME_B) VALUES (取得したA_ID, 'さしす') INSERT INTOTABLE_A (NAME_A) VALUES ('かきくけこ') ↓ INSERT INTOTABLE_A (A_ID,NAME_B) VALUES (取得したA_ID, 'たちつ') INSERT INTOTABLE_A (NAME_A) VALUES ('さしすせそ') ↓ INSERT INTOTABLE_A (A_ID,NAME_B) VALUES (取得したA_ID, 'なにぬ') TABLE_A ID NAME_A 5  'あいうえお' 6  'かきくけこ' 7  'さしすせそ' TABLE_B ID A_ID NAME_B 1  5  'さしす' 2  6  'たちつ' 3  7  'なにぬ'