
No.2ベストアンサー
- 回答日時:
$conn = pg_connect("接続文字列");
$fd = fopen ("ファイル名", "r");
while (!feof ($fd)) {
$line = split(",",fgets($fd, 1行のバイト数));
$sql = "insert into テーブル名 (カラム1,カラム2,カラム3,・・・) values ('$line[0]','$line[1]','$line[2]',・・・)";
pg_query($conn,$sql);
}
fclose ($fd);
って言う感じでしょうか?
この辺のことはマニュアルに載っています。
マニュアルをみて研究してみてください。
ただしこの方法は、レコード数が多くなると恐ろしくパフォーマンスが悪いと思います。悪くするとPHPがタイムアウトすることもあります(経験談)。
どうせならpsqlのCOPYコマンドをPHPから呼び出した方がめちゃくちゃパフォーマンスはいいです。
参考URL:http://www.php.net/manual/ja/function.fgets.php
こんにちは。
スクリプトまで教えていただいてありがとうございます・・助かります。
ここまで教えていただいたら後はなんとかなりそうです。
やはり、psqlコマンドから実行するほうが速いんですね。
今は実験段階なので、本番で使用する時には頭に入れておこうと思います。
マニュアルは見たつもりなのですが・・まだ甘いですね。
勉強になります。どうもありがとうございました!
No.1
- 回答日時:
データベースには何をお使いでしょうか?
たとえば、CSVファイルがカンマ区切りなら、CSVファイルを1行ずつ読みとってカンマをデリミタにしてsplit()で配列に格納、INSERT文でデータベースにインポート。
ただし、行の数だけINSERTを行うと、かなりパフォーマンスが悪いかもしれません。
PHPから、データベース独自のコピーコマンドを使う。
PostgreSQLしか知らないのですが、PostgreSQLにはファイルからデータベースにインポートするためのCOPYコマンドがあります。それを使えば簡単にできます。
たとえば、
psql -h ホスト名 -c "copy テーブル名 from 'ファイル名' using delimiters ',';" データベース名
という感じですね。これをsystem()やexec()などを使ってPHPから実行すればどうでしょう?
ありがとうございます!
すみません、書き忘れましたがDBはPostgreSQLです。
なので教えていただいたコマンドも試してみようと思います!
あと、画面上から登録させる方法も試したいので、
そちらの方で今がんばっています。
テーブルにINSERTする方法はわかるのですが、
CSVを一行ずつ読み込んで変数に格納して・・・
ってところがわかってないです。
また何かありましたら教えてください!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI サイト訪問者の情報を取得したい 1 2023/02/21 11:03
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Visual Basic(VBA) VBA 毎日取得するデータを順番に反映していく方法 6 2023/08/26 16:22
- Access(アクセス) CSVファイルの「0落ち」にVBA 6 2023/02/02 15:27
- その他(開発・運用・管理) おんどとりWebStorage APIから温度情報を取得し表示したい 2 2023/08/03 09:53
- Visual Basic(VBA) vbaマクロについて 次のようなマクロを組みたいです。 自分は初心者なので全くわかりません。 詳しく 8 2023/05/18 18:38
- Visual Basic(VBA) vbaマクロについて 【1.csv】をもとに【商品.csv】に有るものを【有り.csv】として名前を 1 2023/05/18 07:58
- Excel(エクセル) Excel Powerクエリーの質問、行数指定は可能でしょうか? 2 2022/08/22 12:54
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MySQLでデータベースにデータin...
-
CAKEPHP current_timestamp
-
日またぎの計算
-
csvをDBへ読み込んだら、NULLが...
-
テーブルの最後のレコードしか...
-
SQL文が実行できません
-
ExcelVBAでAccessのデータを検...
-
JAVA SQLServerException 列名 ...
-
PHPで絞り込み検索結果の件数を...
-
アラートでyes noを作りたいです。
-
PHP+SQLite でSELECT文のWHERE...
-
PHPからSQLite3のUPDATEができ...
-
時刻型にNULLでセットしたい
-
DBでAUTO_INCREMENTのフィール...
-
mysql_field_lenの返り値がvarc...
-
sendmailの$bodyの中にwhile文
-
DBで検索結果に該当するデータ...
-
Pro*Cの構文エラー
-
ボタンのonclick時における関数...
-
phpでmysqlを使ってデータベー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MySQLでデータベースにデータin...
-
csvをDBへ読み込んだら、NULLが...
-
変数にNULLを代入したい
-
カラムにデータがあるかないか...
-
ヒアドキュメントでSQLを書く事...
-
3つのテーブルを結合したSELECT文
-
MYSQLのレコードの数を表示した...
-
PHPでPostgreSQLのテーブルを表...
-
php sqlite count 列数取得
-
クエリObjectをforeachで回す時...
-
OracleからAccessへのインポート
-
PHP PDOを利用してカラムの削除...
-
DB Error: no such field
-
テーブルを使用してレイアウト...
-
PHPシステムでSQLのUPDATEがあ...
-
テーブルのカラムの属性を変え...
-
重複データをカウントするのに...
-
変数を組み入れたい
-
phpでテーブルを作る際変数によ...
-
phpの掲示板でレスがあったスレ...
おすすめ情報