phpのpg_copy_from関数の使い方について

このQ&Aのポイント
  • pg_copy_from関数を使ってデータをコピーする際にエラーが発生する場合があります。
  • エラーメッセージによると、列'eee'のデータが存在しないためにエラーが発生しているようです。
  • データベースのテーブルには、'ccc'という名前のテーブルがあり、'ddd'と'eee'という2つの列が作成されています。コピーが正常に行われるようにするにはどうすればよいでしょうか?
回答を見る
  • ベストアンサー

pg_copy_fromの使い方について質問です。

pg_copy_fromの使い方について質問です。 <?php $a = array(1,2); $con=pg_connect("host=localhost dbname=byoin port=5432 user=postgres"); if (!$con) { die("データベースが開けません。<br>\n"); } pg_copy_from($con,ccc,$a,","); pg_close($con); ?> のようにすると、 Warning: pg_copy_from() [function.pg-copy-from]: Copy command failed: ERROR: 列"eee"のデータがありません CONTEXT: cccのCOPY。行番号 1: "1" in C:\xampp\htdocs\c.php on line 7 のようにエラーが出ます。 ちなみにデータベースは、 cccというテーブルの中にddd(integer not null、主キー)とeee(integer)の2列が作ってあります。 どうすれば、コピーがうまく出来るのでしょうか? ご回答をお願い致します。

  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • bx2
  • ベストアンサー率47% (97/206)
回答No.1

データ配列が間違っています。 下記のように書きます。 $a = array("1,2\n", "3,4\n", "5,6\n");

参考URL:
http://jp2.php.net/manual/ja/function.pg-copy-from.php
tikutakutiku
質問者

お礼

ありがとうございました。

関連するQ&A

  • pg_prepareが使用できない(Undefined function

    お世話になります。 現在PHPとPostgreSQLでアプリケーションを作成しております。 データベースのセキュリティのために、pg_prepare関数を使い たいのですが、以下のようなエラーが出てしまいます。 Fatal error: Call to undefined function pg_prepare() in ... 該当ソースコードとバージョンは以下のとおりです。 ///ソース $con = pg_connect("user = $DBUSER password = $DBPASSWORD dbname = $DBNAME"); $rst1 = pg_prepare($con, "query", 'SELECT * FROM test WHERE name = $1'); $con = pg_close($con); ///バージョン Apache 2.0.59 PHP 5.1.6 PostgreSQL 8.1.4 何か原因で考えられることはあるでしょうか。 pg_escape_stringもまったく同じエラーが起きてしまい頭を抱えています。お手数かけますがよろしくお願いします。

    • ベストアンサー
    • PHP
  • PEARでpg_copy_fromは使えませんか?

    PHPで開発していて、 DB接続にPEARを使用しています。 現在、プログラム内にて、 テーブルにデータをinsertする際に、 1レコードずつinsert文を使用していますが、 レコード数が多いため、処理に時間がかかっています。 処理スピードを早くするために、 PHPのpg_copy_from関数を使ってデータを入れようと思ったのですが、 DB操作をPEARで行っていると、この関数は使えないのでしょうか。 (いろいろ調べたのですが、それらしい情報を見つけられませんでした。) PEARからpg_copy_from(またはそれに類似する方法)を使用する方法か、 テーブルに大量のデータをinsertする際に、高速化をコーディングで実現する方法、 いずれかご存知の方がいらっしゃったら、教えていただけないでしょうか。 (PHP経験が浅いため、質問自体がおかしかったらすみません。)

    • 締切済み
    • PHP
  • PHPからのpostgresDBのテーブルに対し『\copy』の実行はできますか?

    $conn = pg_connect("host=xxxxxx user=postgres port=5432 dbname=xxxx"); $result = pg_Exec ($conn, $SQLSTR) ; HTML上から上記のようにphpの関数 pg_Exec を使用して、 copy文を実行したいのですが、うまくできません。 phpからcopy文を実行することはできないのでしょうか? コピー文:"\copy tablename with oid to /tmp/output" ちなみに、$SQLSTRにselectやupdateなどのSQL文をいれると うまくいきます。 使用している環境は、OSがlinuxで、APACHE+php3+postgres6.?? です。

  • pg_connect関数

    すみません、質問させてください。 PostgreSQLでPHPの接続をしようと考えています。 Apache, PHP, PostgreSQLのインストールは終了 しています。 PHPのスクリプト内で、 if( !$pg_con=pg_connect("host=$hostname dbname=test user=nobody") ) { と記述して接続を試みているのですが、 Call to undefined function: pg_connect() ・・・ というエラーが出てしまいます。 どのように対処すればいいかアドバイスを下さい。 お願いいたします。

  • PHPからposgresをオープンする文法

    いろいろなページで調べましたが、 下の文法でPHPからpostgresを開こうとするとエラーになります。 文法 $con = pg_connect ("host=localhost port=5432 dbname=dic user=xxx password=xxx"); エラー Fatal error: Call to undefined function pg_connect() in C:\Program Files\Apache Group\Apache2\pic\php2.php on line 9 line 9 はconnectの行と一致しますので、何かこの行に問題があるのだとは思います。 バージョンは、 postgresは、Windows版で8.0 、 PHPは5.04で、Windows版。 正しいコマンドが他にありますでしょうか? または、他に問題点は考えられないでしょうか?

  • PHPからposgresをオープンする文法

    いろいろなページで調べましたが、 下の文法でPHPからpostgresを開こうとするとエラーになります。 文法 $con = pg_connect (\"host=localhost port=5432 dbname=dic user=xxx password=xxx\"); エラー Fatal error: Call to undefined function pg_connect() in C:\\Program Files\\Apache Group\\Apache2\\pic\\php2.php on line 9 line 9 はconnectの行と一致しますので、何かこの行に問題があるのだとは思います。 バージョンは、 postgresは、Windows版で8.0 、 PHPは5.04で、Windows版。 正しいコマンドが他にありますでしょうか? または、他に問題点は考えられないでしょうか?

    • ベストアンサー
    • PHP
  • Postgresqlが接続できない

    環境はxp、apache2、php5、Postgresql8.2です。 ただ今PHPとPostgresqlの勉強をしています。 PHP5で作成したプログラムでPostgresqlへアクセスするのですが,全く応答がありません。 ブラウザで表示後、ソースを見ると Parse error: syntax error, unexpected T_VARIABLE in C:\Program Files\Apache Group\Apache2\htdocs\sample\aa.php on line 10 というエラーが表示されます。 aa.phpの10行目は $d_base = pg_connect("user=postgres password=0000 dbname=test"); と、データベースに接続しています。 どこがおかしいのか ご教示して頂けたら幸いです。

  • Postgrsql8.1.9+PHP5.1.6+apacge2

    すみませんLINUXの初心者です Postgrsql8.1.9+PHP5.1.6+apacge2をインストールしています OSはSentOS5です とりあえずPHPで書いたものをWEBでデーターベースに接続してみて 問題あればエラーが出ると思っていたのですが WEBの画面には何も表示されない状態になってしまいます。 <?php // データベースに接続 $con = pg_connect("dbname=template1 user=postgres password=000"); // クエリの実行 $rs = pg_query($con, "select * from tester"); // 結果セットの行数を取得 $maxrows = pg_num_rows($rs); for ($i = 0; $i < $maxrows; $i++) { $row = pg_fetch_row($rs, $i); echo("$row[0] | $row[1]<br>\n"); } // データベースの接続終了 pg_close($con); ?> HTMLで書いた物はWEB画面には出てくるのですが・・・ とりあえずインストールされてるものを 書いてみました。 postgresql-libs-8.1.4-1.1 postgresql-server-8.1.9-1.el5 postgresql-8.1.9-1.el5 httpd-2.2.3-7.el5.centos php-common-5.1.6-15.el5 php-mbstring-5.1.6-15.el5 php-cli-5.1.6-15.el5 何かが足りないのかconfigの編集が悪いのかまったく わからない状態です PHP・apacheは vi /var/www/html/test.php <?php phpinfo(); ?> を書き込んでWEBを開くとphpinfoのページは開きます。 Postgresqlは単独でテーブルの登録はできます。 解決に必要な情報が要る場合は言っていただければ・・・ ただ初心者なのでコマンドを教えてもらえると助かります すみませんがよろしくお願いします。

  • PHP+PostgreSQLにおける「pg_exec」と「pg_query」について

    こんばんわ。 今日からASPをPHPに変えてプログラムを開発しているものです。 ある書籍にSQLを実行する場面で「pg_query」と書いてあってのでそれでやっていましたがエラーが出ていました。 違う書籍に「pg_exec」と記載されていたのでそちらでやるといままでのエラーがうそのように表示されました。 これはPHPまたはPostgresのバージョンか何かが影響しているのでしょうか? また、過去書き込みで「pg_query」を使ったほうがいいとの書き込みがあったのですが・・・。 どうしたものでしょうか・・・お手数をおかけしますがお教えくださいますようお願いいたします。

    • ベストアンサー
    • PHP
  • データベースに接続できない

    postgresql-7.2.3.tar.gzインストール時には、下記内容でデータベースに接続できていました。 <?php $con = pg_connect("dbname='database_6' user='postgres' password='xxx'") if(!$con){ print "DB connection failed!!\n"; }else{ print "DB connection successful!!\n"; } ?> ところが、postgresql-8.0.26.tar.gzをインストールしたら、上記内容でデータベースに接続できなくなり、 Fatal error: Call to undefined function: pg_connect() in /usr/local/apache/htdocs/sql.php on line 2 というエラーメッセージが表示されます。 phpinfo();で確認もしましたが、ない感じです。Additiional Modulesのどこかを見れば、いいのでしょうか? pgsql.soは/usr/local/lib/php/extentions/pgsql.soにあります。/usr/local/lib/php.iniのextention_dir = ./を以下のように修正し、 extention_dir = /usr/local/lib/php/extentions extention=pgsql.so /usr/local/apache/bin/apachectl restart も実行しています。