- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:phpでsql文を生成するプログラム)
phpでカンマ区切りのtxtファイルを読み込んで、ポスグレSQLのインサート文を作り出すプログラムについて
このQ&Aのポイント
- phpを使用して、カンマ区切りのtxtファイルを読み込み、ポスグレSQLのインサート文を生成するプログラムを作成しています。
- 特定の列を飛ばしてデータを登録するための方法についてご教示ください。
- ファイルのデータにはABC列から始まるデータがありますが、C、D、Gの列は登録しないようにしたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
file名が'data.txt'でしたら、 $a = array_map(create_function('$l', 'return preg_replace(\'/((?:[^,]*,){2})((?:[^,]*,){2})([^,]*,[^,]*),[^,]*/\', \'$1$3\', $l);'), file('data.txt')); こんなんでどうでしょう? $aに変換結果が入ります。
その他の回答 (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)); とか
質問者
補足
わかりにくくてすみませんでした。 そうですね。ファイルのカラム数とデータベースのカラム数が違うので、不要なカラムの値をsql文に入れないようにしたいのです。 具体的にはやはり、ファイルを展開し二次元配列にした後に、 回答していただいたような処理を行うのがベストでしょうか?
お礼
ありがとうございました。 助かりました。