- ベストアンサー
テキストファイルのデータをPostgreSQLに書き込む方法を教えてください
テキストファイルから読み込んだデータをテーブルに書き込むCプログラムを作りたいのですが PostgreSQL 8.3.1を学び始まったばかりです。 テキストファイル(ユーザ、姓、名)と言う項目を作り、 データを<user>テーブルに書き込むプログラムを作りたいのですが、 「PostgreSQL 8.3.1文書 第 30章libpq - C ライブラリ」を読んでも、 どこからやればいいか、まったくわかりません。 お分かりの方、是非教えてください
- みんなの回答 (3)
- 専門家の回答
関連するQ&A
- PostgreSQL テキストファイルのインポートができません
初めて質問させていただきます。どうかよろしくお願いいたします。 PostgreSQL8.4を勉強始めたばかりです。 エクセルの社員一覧シートをタブ形式でD:\TEST\TEST.txtに作成いたしました。 このデータを社員テーブルにインポートしたいのですが 氏名の項目で名字と名前の間に半角の空白があり インポートできません。 ダブルコーテーションで氏名を囲むとできるのですが テーブルの項目にダブルコーテーションが入ってしまいます。 テキストファイル ------------------------------ 番号 氏名 生年月日 1 山田 太郎 19610101 2 山田 花子 19610101 社員テーブル ------------------------------- 項目名 データ型 番号 INT 氏名 VARCHAR(100) 生年月日 INT PostgreSQLではPSQLを使用しております。 インポートでは、COPYコマンドを使用しております。 COPY 社員テーブル FROM 'D:/TEST/TEST.txt'; ご教授の程、よろしくお願いいたします。
- 締切済み
- PostgreSQL
- テキストデータをpostgreSQLのデータベースに一括インポートする方法(perl)
今、テキストデータをpostgreSQLのデータベースに一括インポートする CGI(perl)にて作成中なのですが、息詰まってしまい、わかる方が いましたら、ご伝授いただければと思い質問させていただきました。 ■CGI(test-inport.cgi) ~ 省略 ~ $cmd = "●●●"; system($cmd); $cmd = "psql -h ホスト名 -c 'copy テーブル名 from 'テキストファイル名'"; system($cmd); ※ここのホスト名は何を書いたらいいのでしょうか? 良かったら、教えて下さい。 上記ので、●●●に、telnet で使用する \i テーブル名 などを入れて、DBを作成し、そこにテキストデータを流したい と思っています。 しかし、 $cmd = "\i テーブル名"; system($cmd); が動きません。 どのように、書けばいいのでしょうか? 良かったら、教えて下さい。 また、アルゴリズム自体がおかしい場合は、 違う手法も教えていただければと思います。
- ベストアンサー
- Perl
- Cプログラミング内でのPostgreSQLの利用について
Cプログラムでのデータベース接続が出来ない事で質問です。 現在C言語で書いたプログラムがありまして、今まではwindows上でCSVファイルから読み込んで、 新しいファイルに書き込むというような内容のプログラム作っていました。 それを今は OSをLINUXのRedhat(teratermからアクセス) 読み込むデータファイルをデータベース(Postgresql) にしてやっています。 何とかDBをインストールして、DBにCSVファイルをコピーした物を作る所までは出来ました。 その後CプログラムでDBを利用する時、色んな設定をしてやらなくてはいけないと思うのですが まずlibpq-fe.hというものをincludeして使うとは分かったのですが、これがまず見つかりません。 質問(1) OSの中のファイルを探す時にコマンドで# find ~ -name libpq-fe.hとやったのですが間違っていますか? ちなみにあるとしたらどこにそのヘッダーファイルはありますか? 質問(2) インストールした手順としては日本PostgreSQLユーザ会のサイトからソースをダウンロードしてコンパイル、インストールを行いましたが、調べるとrpmと言うものを使ってインストールした人が同じような内容で質問していて、develを入れないとヘッダーファイルが 入らないという記述がありました。 その事は何か関係がありますか? 質問(3) libpq-fe.hが必要と書きましたが、他にもlibpq.soやlibpq.hと書いてあったりしてそこの所もよく分かりません。 記述が足りなかったらすいません。 ヒントでも良いので宜しくお願いします。
- ベストアンサー
- PostgreSQL
- ファイルアップロードによるPostgreSQLのデータ更新について
OSはRedhat7.2、webサーバとしてはapache1.3.26を使用しています。 現在PHP4とPostgreSQLを使用してのwebアプリを構築中ですが、データベースへのレコード追加のことで質問があります。 テキストファイルをアップロードしデータベースに流し込むという処理をPHPから行いたいのです。 PostgreSQLに用意されているCOPYコマンドを使おうと思っていたのですがどうやらこれはPHPからは使えないらしいのです。このコマンドはPostgreSQLのスーパーユーザのみ実効可能とのことですが、DB接続時のユーザをスーパーユーザにしてもだめでした。 現在は、 echo \\\copy テーブル名 from '/tmp/$uploadfile_name' | /usr/local/pgsql/bin/psql データベース名 という文をシステム関数を使用して流すことにより処理していますが、これだとwebサーバとデータベースサーバが同じマシンじゃないとだめです。 データベースサーバとwebサーバを別のマシンにして同じような処理をするには、テキストファイルの中身を1行ずつ変数に格納して、1行ずつinsert文を発行していくしかないのでしょうか?また、この方法だと処理時間はかなりかかるのでしょうか?ちなみにテキストデータの中身は大体200行前後で一番多いときで1000行ほどです。フィールド数は70ほどです。どなたかよい方法があれば教えてください。 よろしくお願いします。
- ベストアンサー
- PHP
- テキストファイルの任意の行からのデータ書き込み
C++Builder5.0(Professional)でテキストファイル 書き込みのプログラムを作成しています。 あるテキストファイルがあり、そのファイルの 1,2行目にはすでにテキストデータが書き込まれている ものとします。 このテキストファイルを開き、4行目から 10行目までデータを書き込むといったプログラムは どの様に作成すればよろしいでしょうか。 御回答を宜しくお願いします。
- 締切済み
- C・C++・C#
- postgreSQLで扱えるデータ量
postgreSQLの7.2や7.3で扱えるデータ量の上限はどんな制限があるかどなたかご存知でしょうか?ユーザ会のリリース情報で6.5でテーブルが2GBまでの制限があるということはわかったのですが、他に情報がなくよくわかりません。 対象OSはLinuxです。
- 締切済み
- その他(データベース)
- テキストファイルからMySQLに書き込む
合計12フィールドのテキストファイル(ファイル名:_student.txt)をアップロードし、そのテキストファイルをMySQLのファイル(テーブル名:m_student)に全件書き込もうとしています。(レコードの追加、レコード数は1000件程度が想定されています) アップロードまでは出来たのですが、 テキストファイルを読み込み、 →MySQLのファイル(テーブル名:m_student)に書き込む、 部分が思いつきません。 参考となるサイト、プログラムなどありましたら、ご教授いただけると幸いです。
- ベストアンサー
- PHP
- 複数テキストファイルを読み込み、複数テキストファイルの出力
質問は100個のテキストファイル(それぞれ10個のデータを含む)を読み込み、それぞれのテキストファイルから5個ずつデータを抽出し、200個のテキストファイルとして出力するというプログラムについての質問です。 以下が僕の作ったファイル出力部分のプログラムです。 /************/ void ecg_rr(fp,data_max) FILE *fp; { int b,i=0; int c=1; char fname[64]; data[0][i]=trend_data[0][i]; for(i=0;i<100;i++) sprintf(fname,"ss[%d].txt",1+i); fp = fopen(fname,"w"); fprintf(fp,"%4d\n",c); fprintf(fp,"%8.8f\n",data[0][0]); fprintf(fp,"%8.8f\n",data[0][2]); fprintf(fp,"%8.8f\n",data[0][4]); fprintf(fp,"%8.8f\n",data[0][6]); fclose(fp); sprintf(fname,"sk[%d].txt",1+i); fp = fopen(fname,"w"); fprintf(fp,"%4d\n",c); fprintf(fp,"%8.8f\n",data[0][1]); fprintf(fp,"%8.8f\n",data[0][3]); fprintf(fp,"%8.8f\n",data[0][5]); fprintf(fp,"%8.8f\n",data[0][9]); fclose(fp); } 複数ファイルの読み込み方がわからず、自分のプログラムだと1つのテキストファイルしか読み込めないので、16_4.batを作り、その中身を 16_4 読み込むテキストファイル名1.txt ss[1] 16_4 読み込むテキストファイル名1.txt sk[1] 16_4 読み込むテキストファイル名2.txt ss[2] 16_4 読み込むテキストファイル名2.txt sk[2] ・・・ とやったのですが、うまくいきませんでした。 どうすればよいのでしょうか。
- ベストアンサー
- C・C++・C#
- postgreSQLのCOPY コマンド&serial型について。
はじめまして。 最近からpostgreSQLを使ってデータベースを作っています。初めてのデータベース作成なので、少し手間取っていますが、宜しくお願いします。 テキストエディタを使って、タブ区切りで保存したファイルは、postgreSQLに、\copyコマンドでテーブルの中へ 流し込むことができると思いますが、テーブルを作成した際に、 CREATE TABLE ***(←テーブル名) (id SERIAL PRIMARY KEY,○○ △△,..........,); とテーブルを作ったのですが、1列目のSERIALが邪魔をするのか、COPYコマンドを使ってもテーブル内にデータが入っていきません・・・ エラーは『": can't parse "ne 119, pg_atoi: error in "』と返ってきます。 タブ区切りテキストファイルで、一括登録する際、serial型でうまく自動発番できるファイルの書き方とかありますか? 現在、仕事でデータベースを作っているのですが、扱っているデータの数が、12万件近くあるので、全てを手動で登録するのは、ちょっとキツイです・・・ 回答の方、宜しくお願いします。(質問の内容が、うまく伝わっていなかったら、ゴメンナサイ。)
- ベストアンサー
- その他(データベース)
- postgresql の rule とは
postgreSQL 7.2.1 を使用しています。 あるヒストリカルテーブルがUpdateされた際に 直近データのレコードだけをセレクトした テーブルを新規に作成したいと思っています。 この機能はpostgresql の ruleで実現可能でしょうか? (既存プログラムに手を入れたくないのです) rule機能がイマイチ理解出来ないので どなたかご助言ください。よろしくお願いいたします。
- ベストアンサー
- その他(データベース)
お礼
御掛け様で、上手く動きました。 本当に良いお勉強になって、ありがとうございました。 またよろしくお願いいたします。