• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:phpでsql文を生成するプログラム)

phpでカンマ区切りのtxtファイルを読み込んで、ポスグレSQLのインサート文を作り出すプログラムについて

このQ&Aのポイント
  • phpを使用して、カンマ区切りのtxtファイルを読み込み、ポスグレSQLのインサート文を生成するプログラムを作成しています。
  • 特定の列を飛ばしてデータを登録するための方法についてご教示ください。
  • ファイルのデータにはABC列から始まるデータがありますが、C、D、Gの列は登録しないようにしたいです。

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

  • ベストアンサー
  • masa6272
  • ベストアンサー率66% (93/140)
回答No.2

file名が'data.txt'でしたら、 $a = array_map(create_function('$l', 'return preg_replace(\'/((?:[^,]*,){2})((?:[^,]*,){2})([^,]*,[^,]*),[^,]*/\', \'$1$3\', $l);'), file('data.txt')); こんなんでどうでしょう? $aに変換結果が入ります。

pop4532
質問者

お礼

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

その他の回答 (1)

  • masa6272
  • ベストアンサー率66% (93/140)
回答No.1

質問の意味がちょっとわかりにくいのですが、 A,B,C,D,E,F,G 1,2,3,4,5,6,7 という文字列を 1,2,5,6 に変換したいということでしょうか? そうだとしたらこんな手があります。 1つは、正規表現を使う手です。 $sql_value = preg_replace('/((?:[^,]*,){2})((?:[^,]*,){2})([^,]*,[^,]*),[^,]*/', '$1$3', $sql_value); さもなければ、すなおにimplode、explodeを使うんでしょうね。 list($a, $b, $c, $d, $e, $f,$g) = explode(',', $sql_value); $sql_value = implode(',', array($a, $b, $e, $f)); とか

pop4532
質問者

補足

わかりにくくてすみませんでした。 そうですね。ファイルのカラム数とデータベースのカラム数が違うので、不要なカラムの値をsql文に入れないようにしたいのです。 具体的にはやはり、ファイルを展開し二次元配列にした後に、 回答していただいたような処理を行うのがベストでしょうか?

関連するQ&A