• 締切済み

Cによるデータの読み込み書き込み

初めて書き込みます。 CプログラムでCSVファイルからデータを読み出し、 Oracleへと挿入したいと考えています。 環境は Windows server 2003 Oracle9i となります。 CSVからデータを読み込み、これを編集(カンマの削除など)し、Oracleへと挿入すると言う処理を行いたい。 言語としては、C(ProC)でお願いします。

みんなの回答

  • ryou0607
  • ベストアンサー率27% (71/261)
回答No.4

自分も初心者ながらアドバイスをさせて頂きます。 まず、CSV形式のデータを取り出してどの型に入れるのですか? CString型であれば、取り出してから、Remove(",")でやればカンマを外すことができます。 データの中にカンマがあると面倒ですが・・・

  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.3

こんにちわ Oracle9i であれば、わざわざプログラムを作成しなくても 外部表を使用する事で外部のテキストファイル (CSV ファイル) を 通常の表のようにアクセスする事ができます。  更新できない  索引を定義できない といった制約はありますが、 Insert into 通常の表 select * from 外部表 として、データを通常の表に挿入してしまえば、 後は好きなようにできます。 外部表にしておけば、CSV ファイルの構成が変わっても、 外部表の定義を変更するだけで、プログラムの変更を行う 必要が無くなります。

  • RAPTsong
  • ベストアンサー率42% (74/175)
回答No.2

typo > てきるとモード テキストモード

  • RAPTsong
  • ベストアンサー率42% (74/175)
回答No.1

1.ファイルをてきるとモードでオープンする。 FILE, fopen(filename, "r"); 2.1行読み込む。 gets(); 3.カンマ区切りにデータを分割する。 strtok(), strcpy(); 4.必要な演算を行なう。 この流れで問題はないでしょう? ちなみに、標準Cには、CSVデータを変形してくれるような関数はありません。 strtok などを使用して自前で処理する必要があります。

sima2taku
質問者

お礼

回答頂き、ありがとうございます。 回答頂いた通りに、プログラムの作成を行いましたが、 エラーが発生しました。 fgetsで取り出す際、charの配列にデータを格納しました。 これを、複数の項目に分けるため処理をしようとしたところ、const char*とchar*は置き換えられないという エラーが発生しました。 項目分けは、複数の列に格納された値をまとめて、 一つの文字列にまとめようとしております。 簡単ながら、次のような処理を行い、 複数の項目をCSVの一列から取り出そうとしています。 fgets(char a[],fp); for(i=0,j=0;i<X;i++)/*Xは取り出す項目の固定長に設定*/ { if(a[i]!=",") { b[j]=a[i]; j++ } }

関連するQ&A

  • CSVデータの取り込み

    開発環境 言語 VB6.0 DB  ACCESS 一つ目は、CSVデータをACCESSに保存したいのですがどうしたらいいですか? 開発環境 言語 VB6.0 DB  ORACLE9i 二つ目は、CSVデータをORACLE9iに保存したいのですがどうしたいいですか? どうかよろしくお願いします。

  • C#.net カンマ編集可変長データを配列へ

    教えてください! C#.netにて、CSVデータをストリームリーダで 読込まして、カンマ編集されている、データを配列へ入れ込み プログラム内で利用したいのです! データのサンプルは下記の様になります。 13, ,1231,suzuki,150000, , 14, ,123144444,itoh,150000, , 他方法でも嬉しいので、読込んだデータをテーブル・配列で 利用できる方法を教えて下さい!

  • データベース作成(SQL)のためのデータ整理に関する質問

    よろしければお力添えをお願いいたします。 現在、大量のデータをデータベース化しようとしています。 扱うデータは ・種類:csvファイル(txtファイルにも出来ます) ・サイズ:400kb程度/ファイル ・ファイル数:17万強 これをMySQLでデータベース化しようとしています。 ですが、その前に元のファイルのデータ整理が必要になっています。 具体的に必要な操作は ・空白セルの穴埋め(空白セルには一つ上の行のデータを入れる) ・行、列の削除、および挿入 ・ヘッダーの挿入 ・ファイル名変更 です。 あまりにもデータ数が膨大なので、何かしらのプログラミング言語を使ってデータ整理をしていきたいのですが、こういった場合はどのような言語が向いているのでしょうか。 私はVBAならある程度扱えるので、Visual Basicなら取り組みやすいのではと考えています(VBは触ったことないので完全に妄想ですが...)。 ですが、ファイル・データ操作に対する言語の向き不向きがわかりません。こういった場合はC言語やC++といった言語の方が処理速度は速いのでしょうか。教えてください。 また、csvファイルによるデータ処理が遅いのであれば、txtファイルに変更して処理することも出来ます。 その場合、行の削除、列の削除といったものはC言語で可能なのでしょうか。 長々と質問していまい申し訳ありません。よろしくお願いいたします。

  • C言語 CSVファイルの読み込み

    C言語でCSVファイルから数字を読み込み、それを計算するというプログラムを作りたいのですが、CSVファイルについて全く知識が無く、加えてCSVファイルを利用したプログラムを作るのが初めての為、勝手がわかりません。 まずCSVファイルというのは、 1.2,2.3,3.4 4.5,5.6,6.7 7.8,8.9,9.0 といった数字(文字列)をカンマで区切ったテキストファイルですよね? それをどのようなプログラムで読み込むのでしょうか? 例えば、上記の数字を読み込み、 a. 1.2+4.5+7.8=x b. 8.9-5.6-2.3=y c. 3.4*6.7*9.0=z と計算する場合のプログラムを教えていただきたいです。 よろしくお願いします。

  • Visual C++によるcsvファイルの読み込みについて

    Visual C++を使い始めたばかりの初心者です。 恐縮ながら、Visual C++でのcsvファイルの処理方法についておたずねさせていただければと存じます。 通常のスクリプト言語では、1行読んできて、"," で split をしてやることで、csvファイルを処理できるのですが、Visual C++ではどのようにするのが効率がいいのでしょうか? csvファイルを簡単に取り扱うことができるようなクラスライブラリが提供されているものなのでしょうか?それとも、1文字1文字、コンマを判定していくのが普通なのでしょうか? よろしくお願いいたします。

  • OracleからSQL Server 7.0へのデータの渡し方

    Oracle 8.1.6から SQL Server 7.0にデータを渡したいのですが、 CSVファイルを利用したファイル転送以外の方法ってどんな方法が あるんですか? 環境 Oracle 8.1.6(Trubo Linux Server 6.0) SQL Server 7.0(Windows 2000 Server) ・ネットワーク的には、同一LANの中に存在します。  よろしくお願いいたします。

  • C言語初心者過ぎてわからないです

    エクセルのCSVデータなんですが 1行目のデータを 1行目から5行目まで同じデータ 6行目のデータを 6行目から10行目まで同じデータ 10行目のデータを 10行目から15行目まで同じデータ 以上のような作業を繰り返し元のCSVのデータをすべて5行(つまりデータの量は5倍)にしたいのですが C言語でこのような作業を行うファイルをつくるにはC言語ではどのようなプログラムになるでしょうか

  • テキストデータの読み込みについて

    C言語のテキストデータの読み込みについてです。 C言語のプログラムについてです。 2444,1114,2807, 1984,2845,2086, 658.1,-1564.0,1239.7, -102.0,958.4,123.1, 12.7,6.0,82.7 2439,1110,2802, 1973,2865,2108, 658.8,-1563.7,1239.6, -102.0,957.1,121.9, 12.8,6.0,82.7 2441,1106,2806, 1967,2888,2124, 659.4,-1563.5,1239.5, -102.2,956.4,121.0, 12.8,6.1,82.8 2440,1109,2808, 1964,2896,2127, 660.0,-1563.3,1239.4, -102.7,956.2,120.7, 12.8,6.1,82.8 2441,1112,2807, 1981,2894,2120, 660.6,-1563.0,1239.4, -103.3,956.2,120.1, 12.8,6.1,82.8                                       ↑ 上の様なカンマとスペースで15個に区切られているtxtファイルがあるのですが、このtxtデータの10コ目と11コ目をを計算で使いたく、取り出したいと考えているのですがscanfを使いどのように取り出すことが出来るのか、また取り出したデータから数値を引くことを教えて頂きたいです。 つまり -102.0   958.4 -102.0   957.1 -102.2 と 956.4 -102.7   956.2 -103.3   956.2,             を取り出して計算に使いたいです。 そして1番上の数値だと、 -102.0と958.4 を読み込み、例えばそれぞれ100を引いた値を配列に入れたいです。 -102.0と958.4 → -202.0 と 858.4 のように取り出したいです。 教えて頂きたいです。お願いします。

  • csvファイルのデータをCで読み込みたいのですが

    大学の研究でC言語を利用しています。 csvファイルの値を読み込んで計算したいのですが、読み込む方法(プログラム)が分かりません。 現在、csvファイルの値をテキストファイルにコピーアンドペーストし、それからCで読み込んでいます。 何かいい方法は無いでしょうか?

  • 変換プログラムってどうやって作るのですか??c言語超初心者です。おねがいしますm(__)m

    大学の課題で、「カレンダのデータをiモードで見れるようにする変換プログラムを作りなさい」というのが出されたのですが、正直なんのことだかさっぱりわかりません(汗) 私なりに一生懸命考えた限りはこうです▽ ・文字コード変換プログラムをつくればいいのかな? ・もしくは、データベースをiモードでみれるようにするようにタグを付け加えていくプログラムかな? 環境はUNIXのC言語です。 c言語はまったくの初心者なので文字コード変換プログラムとかもつくれないです。どうか助けてください。

専門家に質問してみよう