• ベストアンサー

オラクル9でCSVファイルを取り組む方法

オラクル内テーブルx_tableにCSVファイルx.csvを 取り込む方法を教えてください. ユーザID:sato パスワード:secret ORACLE_HOME:/usr/oracle でお願いします.

  • keyguy
  • お礼率68% (895/1314)
  • Oracle
  • 回答数2
  • ありがとう数2

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

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

標準的な手法は2つです。 ・SQL*Loaderを使う(#1と同じ) ・外部表として定義し、SQLで読み出す。 9iから、CSVファイルをオラクルの外部表として定義する機能が追加されました。 これを使うと、読み出し専用ですが、通常のテーブルと同じようにアクセスできます。

keyguy
質問者

お礼

ありがとうございます. 以下のようにすればできました sqlldr sato/secret control=x.ctl x.ctl: LOAD DATA INFILE 'x.csv' APPEND INTO TABLE x_table FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS ( i,s ) x.csv: 1,"it is iti." 2,"it is ni." 3,"it is san."

その他の回答 (1)

  • PrintScree
  • ベストアンサー率25% (538/2091)
回答No.1

SQL*Loaderを使用します。 使用方法はマニュアルを見て勉強してください。

keyguy
質問者

お礼

ありがとうございます. マニュアルを探しているのですが見付かりません. サイトを教えてください. オラクルのサイトはわかりますがそこからシェルコマンドにいくルートがわかりません.

関連するQ&A

  • oracleのデータディクショナリからCSV出力のPGM生成

    oracleのテーブルからデータをCSV形式でエクスポートしたいのですが、 expコマンドではCSV形式をサポートしていないようです。  ↓ 仕方なくPL/SQLで順次読みしながらCSV出力するプログラムを書こうと思いました。  ↓ テーブルひとつひとつ手作りするのは面倒なので、 「CSV出力するプログラム」を書くのではなく、 USER_TABLESやUSER_TAB_COLUMNSの情報を参照しながら、 「CSV出力するプログラムを生成するプログラム」を書こうと思いました。  ↓ こんな誰でも思いつく事は誰かが既にやってそうなので、 ネットに落ちているのではないかと思いました。  ↓ という経緯です。 PL/SQLでoracleのデータディクショナリを参照しながら 「CSV出力するプログラムを生成するプログラム」 の雛形がどこかネットに無料で落ちていたら紹介して下さい。 よろしくお願い致します。

  • csvファイル内にてソートする方法

    ご協力お願いします。 あるログデータを取得したcsvファイルを作成しました。しかし、データ量も多く見やすいようにソートをかけたいのですが方法がわかりません。csvファイルの中身は以下のようになっています。 ___________________________ | 端末ID | ユーザーID | 日付 | 時間 | ――――――――――――――――――――――――― | ITD002 | 00000001 |2005/08/22| 11:00 | ――――――――――――――――――――――――― | ITD002 | 00000003 |2005/08/22| 21:00 | ――――――――――――――――――――――――― | ITD001 | 00000001 |2005/08/22| 12:00 | ――――――――――――――――――――――――― | ITD001 | 00000002 |2005/08/22| 18:20 | ――――――――――――――――――――――――― 以上のような中身になっています。レコード量は、もっと多いです。このランダムな順番に取得したレコードを 端末ID(昇順)ユーザーID(昇順)日付(降順)時間(降順)でソートする方法をご教授お願いします。

  • Oracleの.ora/.dbfファイルついて

    手元にOracleが入ったサーバーがあったのですが、故障して動かなくなってしまいました。なんとかオラクルのフォルダは取り出すことが出来ました。データを復元したいと思っております。 フォルダの中身を見たところ、「XXXXX.ora」や「XXXXX.dbf」というファイルが残っておりました。 最終的にはCSVなどに戻したいところですが、まずはOracleに取り込みたいと思っております。ちなみに元のテーブル名、構成などは不明です。 Oracleは11gです。 インポートする方法や中身を表示させる方法などがあればお教え頂ければと思います。

  • VBAでCSVファイルをインポートする方法について

    VBAでCSVファイルをインポートする方法について OS:ウィンドウズXP Access Version:2000 AccessVBAでcsvファイルをインポートするマクロを作っています。 現在、インポート定義を利用して、データ型を指定したインポートができているのですが、1点だけ問題があり、質問します。 インポートするcsvファイルのA列にIDが入力されています。 そのA列の末尾に、ID(数値型)ではない「<b>32</b><br />」という値が入っています。 Accessのテーブルでは、このIDのフィールドは数値型で管理している為、この1レコードだけ エラーとなり、エラーテーブルが作られ、また、インポート先のテーブルには空のレコードができてしまいます。 この末尾の行については、IDではない「<b>32</b><br />」以外は何もデータが入っていない為、 インポートする必要がありません。 もし可能であれば、csvファイルのA列(Accessテーブルでは数値型のIDというフィールド)が数値ではない場合、 その行のインポートをスキップするような処理がVBAで作成できるとよいのですが、可能でしたら教えてもらえないでしょうか。 ※以下はVBAを作成する為に仮に用意し、読込を行っているcsvファイルと、VBAソースになります。 ○csvファイル名:インポート用csvファイル.csv 内容: ID,テキスト1,テキスト2,テキスト3,テキスト4,メモ1,メモ2, 1,a,A,z,Z,あ,ん, 2,b,B,y,Y,い,を, 3,c,C,x,X,う,わ, 4,d,D,w,W,え,ろ, 5,e,E,v,V,お,れ, 6,f,F,u,U,か,る, 7,g,G,t,T,き,り, 8,h,H,s,S,く,ら, 9,i,I,r,R,け,よ, 10,j,J,q,Q,こ,ゆ, <b>32</b><br />,,,,,, ○VBAソース Dim FN As String Dim Res As Integer WizHook.Key = 51488399 Res = WizHook.GetFileName(0, "", "", "", FN, "", _ "csvファイル(*.csv)|*.csv", 0, 0, 4, True) WizHook.Key = 0 If Res = 0 Then DoCmd.TransferText , "csvインポート定義", "インポートテーブル", FN MsgBox "csvファイルをインポートしました", vbOKOnly End If

  • オラクル接続

    OS2000,ACCESS97で、オラクルDB(バージョン 8.1.6) に接続して使用しています。 テーブルを直接開いた時、 最初にパスワードを聞いてきますが 下記モジュールで対応したいのですが、 上手くいきません。 (パスワードをきいてきます) >Set cnn = New ADODB.Connection >cnn.ConnectionString = "Provider=MSDAORA.1;Password=***;User ID=***;Data Source=***" >cnn.Open >DoCmd.OpenTable "M110", acNormal, acEdit M110…オラクルテーブル名です。 Provider名(MSDAORA.1)は、 これであっているのでしょうか? それとも 他に 原因があるのでしょうか? それとも、最初はパスワード、聞いてくるのでしょうか? 以上 宜しくお願い致します。 ※カテゴリは不明でしたので、 とりあえずオラクルにしました。

  • CSVファイルを読み込んでテーブルの更新

    こんばんは。 oracle9iでPL/SQLを使用して、CSVファイルを 読み込んで、テーブルの更新を行いたいと 思っています。 CSVファイル、テーブル共に最初の2つがキー項目です。 ■CSVファイル 001, 111, 10000, 20000 002, 222, 30000, 40000 ・・・・・ ・・・・・ 009, 999, 55555, 55555 ■テーブル 001, 111, 99999, 99999 002, 222, 99999, 99999 ・・・・・ ・・・・・ 009, 999, 99999, 99999 ■テーブル(処理後) 001, 111, 10000, 20000 002, 222, 30000, 40000 ・・・・・ ・・・・・ 009, 999, 55555, 55555 わかったのは、CSVファイルを行単位で読み込む所までです。 DECLARE   File_Handle UTL_FILE.FILETYPE; Read_Line VARCHAR2(1023); BEGIN File_Handle := UTL.FILE.FOPEN('dir', 'file', 'r'); BEGIN LOOP UTL.FILE.GETLINE(File_Handle, Read_line); END LOOP; END; UTL.FILE.FCLOSE(File_Handle); END; 1行を読み込んだのはいいけど、この後がよくわかりません。テーブルを更新する所とあわせて、ご教示ください。

  • csvファイルを使ってMySQLのテーブルを更新し

    約2万件ある15個のカラムで構成されるMySQLのテーブルがあります。 このテーブルをcsvファイルを使って更新しようと考えています。 csvファイルにはレコードIDとあるカラムの変更する値の2つのセルで 構成されています。 行数は毎回異なりますが、だいたい300行前後です。 csvファイルの具体的イメージはこんな感じです。 id order ============ 2,  200 4,  10 7,  460 11,  35 MySQLのテーブルの方にも「id」と「order」というカラムが存在します。 java や PHP を使ってやる方法はわかるんですが、プログラムを作成しないで SQLだけで行いたいと考えています。 LOAD DATA LOCAL INFILE などがあることがわかったのですが、レコードを REPLACE  するのではなく、一部のカラムをアップデートしたい、ということです。 どなたか、教えて頂けると助かります。 よろしくお願い致します。

  • CSVファイルの取り込み

    みなさんはじめまして VB初心者です。 個人+仕事で色んなデータをエクセルに納めています。 そのデータ(CSV)をオラクルのデータベースに収めようと思っています。 その為データをオラクルに取り込むプログラムを作ろうと思っていますが、 その前段階として、CSVファイルを取り込みたいのですが、買った入門者 用の本にはそんな事がかかれていなくて、どのように取り込めばいいのかが わかりません。大きな本屋で、それらしいものを探していましたが、見当た らなかったです。(というよりわからなかったと言うのが正解です) どのようにしてCSVファイルを取り込めばいいのでしょうか?

  • アクセス→オラクルの方法は?

    アクセス(Access2000)で作ったサンプルDBを オラクル(Oracle9i)にインポートするためには どうすればいいのでしょうか。 そもそもできるのでしょうか。 テーブルだけでOKなんです。 いったんデータをcsvにはいてから? 逆方向(オラクル→アクセス)はよく見かけるのですが…

  • Oracleでオブジェクト権限を調べるディクショナリは?

    Oracleであるユーザーtest_usr1がSample_tblというテーブルについて、test_user2に対してたとえばselectとupdateする権限を付与した場合、test_user2のオブジェクト権限を調べる場合、どのディクショナリで調べたらいいのでしょうか。 基本的な質問で恐縮ですが、よろしくお願いいたします。 Oracle 8.1.7のリファレンス・マニュアルを調べましたが、ここには載っていないようです。