JavaでCSVファイルをOracleDBに格納するプログラムを作成したい

このQ&Aのポイント
  • JavaでCSVファイルをOracleDBのテーブルに格納するプログラムを作成したいです。詳細な仕様は指定されておらず、叩き台があれば後は自分で実装します。
  • CSVファイルとOracleDBのテーブル(テーブル名: TESTTABLE)のレコードを比較し、insertもしくはupdate文を発行するプログラムをJavaで書きたいです。具体的には、CSVファイルの行ごとにOracleDBのレコードと比較し、一致するレコードがあればupdate、なければinsert処理を実行します。
  • 私はプログラムの初心者ですが、JavaでCSVファイルをOracleDBに格納するためのプログラムを作成したいです。ある程度の叩き台があれば、後は自分で実装するつもりです。
回答を見る
  • ベストアンサー

Javaのコード

プログラムのウルトラ初心者です。こんな質問をしてちょっと恐縮です。 環境 ・Windows2000 Server ・Oracle 9i 下記のようなcsvファイルがC:\にあります。 ==========test.csv============ A1, なまえ, 住所, 電話番号, 備考, A2, なまえ3, 住所3, 電話番号3, 備考3 このcsvファイルを、OracleDBのテーブル(テーブル名TESTTABLE)に格納しているレコードと比較し、insertもしくはupdate文を発行します。 ========TESTTABLE========== 列名 a b c d e レコード A2, なまえ2, 住所2, 電話番号2, 備考2 a列にA1はないので、A1についてはinsert。 A2についてはレコードがあるので、update。 この仕様のプログラムをJavaで書きたいです。 全く書いたことがないのですがコードを教えて下さい。 叩き台さえあれば、あとは何とかしようと思っているので。。。

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

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

  • ベストアンサー
  • tajiri
  • ベストアンサー率45% (5/11)
回答No.1

まずは問題を分解して考えてはいかがでしょう? 1.oracleからのデータの取り出し 2.csvからのデータの読み出し 3.Javaプログラムでの文字の比較 4.insertするプログラム

rio_grande
質問者

お礼

JavaでなくてVBにしました。 でもtajiriさんのおっしゃるとおり分解すると1~4になるようです。部分的にはできました。 もうちょっと頑張ってみます。 どうもありがとうございました。

関連するQ&A

  • Load Data INFILE構文について

    お疲れ様です。 いつもお世話になっております。 既にデータが入っているテーブルに対して、CSVをインポートし、該当のレコードだけUPDATEをかけたいと思っています。 ID,名前,備考,属性 1,aaa,, 2,bbb,BBB, 3,ccc,,zok3 4,ddd,,zok4 5,eee,EEE, というデータがあり、これに対して 1,,,zok1 2,,,zok2 5,,,zok5 6,fff,FFF,zok6 というデータを持つcsvを突っ込もうと思っています。 その場合、IDが1,2,5の名前や備考はNULLで上書きされてしまうのでしょうか? また、既存のテーブルにないcsvのID6は入れないようにしたいのですが、これだとLOAD_DATA_INFILEというよりただのUPDATEです。 これらのデータが100万件あって、属性の抜けだけを補完し、既にテーブルから消されているデータはINSERTしたくないのですが、何かスマートな方法はないでしょうか? よろしくお願いします。

    • ベストアンサー
    • MySQL
  • 突合せによるレコード結合について。

    1,住所A,氏名,電話番号,備考 2,金額B,金額,注文番号,備考 2,金額C,金額,注文番号,備考 1,住所D,氏名,電話番号,備考 2,金額E,金額,注文番号,備考 2,金額F,金額,注文番号,備考 2,金額G,金額,注文番号,備考 1,住所H,氏名,電話番号,備考 2,金額I,金額,注文番号,備考 2,金額J,金額,注文番号,備考 2,金額K,金額,注文番号,備考 2,金額L,金額,注文番号,備考 2,金額M,金額,注文番号,備考 上記のようなデータを13レコード取り込んだ際に フィールド1の数値1もしくは2の判定により フィールド1の数値の2を含んだレコードの分だけ フィールド1の数値の1を含んだレコードを増やし 下記のように10レコードにするには アクセスのクエリで出来るのでしょうか? それともVBで構築する方法が良いのでしょうか? お手数ですがアドバイスお待ちしております。 1,住所A,氏名,電話番号,備考,2,金額B,金額,注文番号,備考 1,住所A,氏名,電話番号,備考,2,金額C,金額,注文番号,備考 1,住所D,氏名,電話番号,備考,2,金額E,金額,注文番号,備考 1,住所D,氏名,電話番号,備考,2,金額F,金額,注文番号,備考 1,住所D,氏名,電話番号,備考,2,金額G,金額,注文番号,備考 1,住所H,氏名,電話番号,備考,2,金額I,金額,注文番号,備考 1,住所H,氏名,電話番号,備考,2,金額J,金額,注文番号,備考 1,住所H,氏名,電話番号,備考,2,金額K,金額,注文番号,備考 1,住所H,氏名,電話番号,備考,2,金額L,金額,注文番号,備考 1,住所H,氏名,電話番号,備考,2,金額M,金額,注文番号,備考

  • メモ帳のデータをCSVに変換

    こんにちは。データベースを作ることになったのですが、もともとあったデータを取り込みたいと思っています。 元のデータは、ウィンドウズのメモ帳に保存されており、下記のようになっています。 ID:00000 名前:** ** 電話:00-0000-0000 住所: ********* ****** 00-00 ------------- 備考 ************ ********* *************** ------------ というように一人ずつファイルがあります。 これを ID/名前/電話/住所/住所2/備考 という感じのテーブルに変換してデータベース化したいと思っています。 VBA等を使ってこのようなCSVファイルする方法はあるでしょうか? 出来れば、連続・一度に出来ると嬉しいです。

  • excelの並び替え

    A列のみにデータがあるのですが 1つのデータは 15行ごとになっています。 例えば A1 名前1 A2 電話番号1 A3 住所1 ・・・ A15 備考1 A16 名前2 A17 電話番号2 A18 住所2 ・・・A30 備考2 A31 名前3 A32 電話番号3  という風にデータが並んでいます。 それを SHEET2 に移動したいのですが その時に 要らないデータと並びを変えたいデータがあるのですが、どうするのがいいのでしょうか? A列に 名前 B列に 住所 C列に 備考 という風にしたいのです。 ご返答宜しくお願いいたします。

  • INSERT,UPDATEしなかったレコードだけをDELETEしたい

    質問させてください、 CSV形式の10万行のデータをADO経由でINSERT,UPDATEしています そのときUPDATEもINSERTもされなかったレコードをDELETEしているんですが、 今はINSERT,UPDATE処理が終わったあと、全レコードのrecordsetを1レコードずつ csvファイルの1行と比較しています。 他に良い方法はないでしょうか? csvファイルには category, item, price postgresのテーブル名はt_zaikoとして id(INT[NOT_NULL, default_nextval, primary_key]), category(SMALL_INT), item(TEXT), price(SMALL_INT) とします。

  • ACCESS2003 テーブルから特定のデータを削除する

    初めまして。ACCESS2003で、"Aテーブル"(電話番号、郵便番号、名前、住所のフィールドがあります)から別の"Bテーブル"(たとえば電話番号削除リスト、削除する電話番号のフィールドのみ)に該当するレコードのみを削除するといったような作業をするには、どのようにしたら良いでしょうか? アクセス初心者で困っています助けてください。

  • テーブルの分散について

    お世話になります。 個人情報を格納しているユーザーテーブルがあります。 項目は以下の通りです。 ------------------------------ 1.連番 2.ユーザーID 3.名前カナ(姓) 4.名前カナ(名) 5.名前(姓) 6.名前(名) 7.性別 8.生年月日 9.年齢 10.電話番号 11.携帯番号 12.メールアドレス 13.パスワード 14.職業 15.郵便番号 16.国 17.住所(都道府県) 18.住所(市区町村) 19.住所(町域(番地)) 20.住所(建物名) 21.備考1 22.備考2 23.備考3 24.備考4 25.備考5 ------------------------------ 上記のように個人情報を1つのテーブルにまとめてセキュリティ上、問題はありませんでしょうか。 もし上記のテーブルを分散するとしたらどのように管理するようにしたらいいのでしょうか。 くだらない質問で大変申し訳ありませんがご教授いただけたら幸いです。 何卒、アドバイスの方を宜しくお願いします。

  • (レンタルサーバ)大量データで500エラー

    初めて投稿させていただきます。 現在、勉強もかねてロリポップというレンタルサーバーで PHPのプログラムを作成しております。 プログラムの概要は、以下の通りです。 1)CSVファイルを[テーブルA(MySQL)]へinsert。 2)[テーブルA(MySQL)]から対象レコードをselectし、 処理1を実行した結果を[テーブルB]へinsert。 3)[テーブルA]と[テーブルB]と結合したテーブルから対象レコードをselectし、処理2を実行した結果を[テーブルC]へinsert。 上記プログラムを実行する際に、以下の事象が発生し、困っております。 ・CSVファイルの内容が300行だと正常に処理が終了する。 ・CSVファイルの内容が400行だと、「500 internal server error」が発生する。 実行環境は以下の通りです。 ・ロリポップサーバーのロリポプラン (ディスク容量:50GB) 「500 internal server error」について検索すると「パーミッションの設定」が関係するようなので 推奨値である「600」やデフォルトである「644」の両方で実行いたしましたが どちらも同じ結果でした。 また、try~catchで各処理をかこっていますが、PHPのエラーは出ていません。 CSVファイルの行数を300から400に増やすと起こるので データ量が関係するのではないか、と考えております。 プログラムのエラー(不具合)か、否かを確認する方法はありますでしょうか? また、データ量が問題の場合、どのような回避策がありますでしょうか? CSVファイルを300行までしか読み込まないような制約を付けることも考えましたが プログラム的に可能なロジックがあれば、ご教示いただきたく思います。 ロリポップサーバのプランを上げることも考えましたが それでも、ファイルの読み込みには上限があるでのはないかと考えております。 何卒、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • MySQLでテーブルの完全同期

    MySQLでテーブルの完全同期を行いたいです。 例えばAテーブルをUpdateしたらリアルタイムでBテーブルもUpdate、同様にInsert、Delete。 Aテーブルに1000レコードはいっていて、Bテーブルが0件の場合、自動的に1000件Bテーブルに取り込む。 このようなことを実現することは可能でしょうか

    • ベストアンサー
    • MySQL
  • エクセルの住所録をGmailの連絡先へインポート

    エクセルで作成した住所録をGmailの連絡先へインポートするには どうしたらよいでしょうか? CSVで出力してインポートをかけているのですが、部分的に読み込まない部分があります。 エクセルでは1行目横列に名前、メール、電話番号、住所の順に入力してあります。名前・電話番号は読み込んで連絡先に反映されるのですが、住所などは備考の部分に入ってしまいます。 エクセル側で定義付け等が必要なのでしょうか? また電話番号等も電話番号と携帯番号など2つを読み込ませることはできないのでしょうか? ご指南お願いします。

専門家に質問してみよう