- 締切済み
Cによるデータの読み込み書き込み
初めて書き込みます。 CプログラムでCSVファイルからデータを読み出し、 Oracleへと挿入したいと考えています。 環境は Windows server 2003 Oracle9i となります。 CSVからデータを読み込み、これを編集(カンマの削除など)し、Oracleへと挿入すると言う処理を行いたい。 言語としては、C(ProC)でお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- ryou0607
- ベストアンサー率27% (71/261)
自分も初心者ながらアドバイスをさせて頂きます。 まず、CSV形式のデータを取り出してどの型に入れるのですか? CString型であれば、取り出してから、Remove(",")でやればカンマを外すことができます。 データの中にカンマがあると面倒ですが・・・
- muyoshid
- ベストアンサー率72% (230/318)
こんにちわ Oracle9i であれば、わざわざプログラムを作成しなくても 外部表を使用する事で外部のテキストファイル (CSV ファイル) を 通常の表のようにアクセスする事ができます。 更新できない 索引を定義できない といった制約はありますが、 Insert into 通常の表 select * from 外部表 として、データを通常の表に挿入してしまえば、 後は好きなようにできます。 外部表にしておけば、CSV ファイルの構成が変わっても、 外部表の定義を変更するだけで、プログラムの変更を行う 必要が無くなります。
- RAPTsong
- ベストアンサー率42% (74/175)
typo > てきるとモード テキストモード
- RAPTsong
- ベストアンサー率42% (74/175)
1.ファイルをてきるとモードでオープンする。 FILE, fopen(filename, "r"); 2.1行読み込む。 gets(); 3.カンマ区切りにデータを分割する。 strtok(), strcpy(); 4.必要な演算を行なう。 この流れで問題はないでしょう? ちなみに、標準Cには、CSVデータを変形してくれるような関数はありません。 strtok などを使用して自前で処理する必要があります。
お礼
回答頂き、ありがとうございます。 回答頂いた通りに、プログラムの作成を行いましたが、 エラーが発生しました。 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++ } }