
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ほどです。どなたかよい方法があれば教えてください。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
済みません、なんか書き方おかしいですね。
psql -h データベースサーバー名 -c "copy テーブル名 from ファイル名; " データベース名
ですかね?
No.1
- 回答日時:
私もそういうので悩んだことがあります。
で、結局やっているのは、データベースのサーバーでftpdを動かして、Webサーバーからftpでファイルを転送して、そのファイルをcopyコマンドでテーブルにインポートするというもの。
PHPは"--enable-ftp"でconfigureするとftp関数が使えます。また、
psql -h データベースサーバー名 -c \"\
copy テーブル名 from ファイル名;
\" データベース名
ってしてやると、リモートホストから、データベースサーバー上のファイルからレコードを追加することができます。
参考になりますでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 情報処理技術者・Microsoft認定資格 応用情報処理技術者試験のシステム利用率の計算について 2 2022/03/28 07:43
- その他(データベース) 業務用のデータベースサーバーの選び方について 4 2022/11/22 10:22
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- JavaScript Typescript が必要な理由 1 2023/01/07 11:45
- その他(コンピューター・テクノロジー) 以下の用語がわかんないので教えてください!!! ①プロトコルの変換をする装置。トランスポート層からア 1 2023/07/05 09:10
- JavaScript Q&Aの掲示板を作成していてヤフー知恵袋やgoo質問のように質問ごとにURLを生成したい 5 2023/08/04 01:22
- その他(プログラミング・Web制作) プログラムの起動、利用について、使用期間を設定する方法 3 2023/08/06 21:03
- HTML・CSS WEBサイトの構築。表示データとWEBデザインを分離する考え方を専門用語・業界用語では何と言うか? 8 2022/09/27 09:16
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- フリーソフト 色々な形式の個人情報を後で参照しやすいようWindow10で管理したいのですが、どんな方法があるの? 1 2023/04/29 16:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
登録したデータを県別に並び替...
-
Accessへ日付をINSERT
-
PHP while~mysqli_fetch_assoc
-
PHPでmySQLのデータベースを操...
-
DB Error: no such field
-
カラムにデータがあるかないか...
-
access → Oracleへのデータ移...
-
phpにて出欠登録管理を作成して...
-
PHPでフォームからデータDBに書...
-
MySQLでデータベースにデータin...
-
PEAR MDB2 のsetFetchModeが設...
-
codeigniter 複数モデルでトラ...
-
PHPとMysqlによる正規表現について
-
mysql_fetch_assoc()の非推奨
-
チェックボックスによる複数の...
-
dbに登録したデータをphpのプル...
-
実行時エラー3131 FROM 句の構...
-
C#でDBの特定列をUpdate
-
DBへのinsert後のid(auto_incr...
-
<VB.NET>INSERT文でDBにデータ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MySQLでデータベースにデータin...
-
csvをDBへ読み込んだら、NULLが...
-
OracleからAccessへのインポート
-
ヒアドキュメントでSQLを書く事...
-
変数にNULLを代入したい
-
日またぎの計算
-
DB Error: no such field
-
会員番号等に利用するダブらな...
-
SQLのUPDATE文につい...
-
出勤表の作り方
-
php sqlite count 列数取得
-
phpでテーブルを作る際変数によ...
-
カラムにデータがあるかないか...
-
phpにて出欠登録管理を作成して...
-
PHP PDOを利用してカラムの削除...
-
検索結果が多い時の分割(件数...
-
cakePHPのbakeでモデルを作る
-
エクセルをMysqlに格納
-
phpを使用し、カテゴリー別に表...
-
重複データをカウントするのに...
おすすめ情報