- ベストアンサー
CSV形式のテキストデータをSQLへ登録したい
- CSV形式のテキストデータを解析してSQLに登録する方法について教えてください。
- テキストデータの解析がうまくいかず、中途半端にごちゃごちゃしてわからなくなっています。
- check.phpに表示する確認テーブルの作成方法も教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
CSVをMySQLに入れる方法ですが、二通りあります (1)mysql_query関数でSQL文 INSERT を実行する (2)MySQLのLOAD DATA INFILEコマンドを使ってcsvファイルをインポートする PHPにCSVファイルを読み込んで変数にデータとして保持することに成功したなら (1)をお勧めします。
その他の回答 (3)
- honoka-cha
- ベストアンサー率54% (40/73)
改行はtrim関数や str_replace関数で削除することができるので、 explode関数に通す前にそれで改行をとれば良いです それからfgetcsv関数はPHPのなかではあまり良い関数とはいえないので使わないほうがいいでしょう 昔からあまり動作が安定しない関数です 仮にfgetcsv関数のような振る舞いをする処理をしたいとしても多くの人は fgetcsv風の自分なりの関数を自作してから使っているのが実情です
お礼
>昔からあまり動作が安定しない関数です これは知りませんでした。fgetcsv_regというのが見つかりましたので、これを使ってみます。
- honoka-cha
- ベストアンサー率54% (40/73)
> 自分で作るとテキストデータの解析がうまくいかず explode()関数を使えばうまく配列などに格納してくれます 参考URLには似たような例がわかりやすく載っています
お礼
mysqlはcsv形式のデータを扱うことができるので、 【テキストデータ】->【解析して確認画面に表として表示】->【送信されたらcsv形式でインポート】 という手順を考えています。 explode関数は改行があると使えないので、fgetcsvで解析を考えました。 が、うまく解析されません(訂正するたびにエラー箇所が変わってきてどこが原因かがわからない) また、csv形式でのインポートにしても、SQLからのエクスポートのやり方はいくつかのっているものの、インポートのやり方は載っていませんでした。
- hitomura
- ベストアンサー率48% (325/664)
すみませんが、MySQLで直接CSVをインポートするほうがてっとり早いと思うんですが、なぜわざわざPHPを介してインポートするのでしょうか。 参考URL:データをCSVで入出力する方法 - MySQLの小技 http://tomo.ac/goodstream/database/mysql/linux/tips.htm#%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92CSV%EF%BC%88Excel%EF%BC%89%E3%81%A7%E5%85%A5%E5%87%BA%E5%8A%9B%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95
お礼
たとえば英単語の学習のように、使用者一人一人がブラウザから使うコンテンツを一括して登録できるようなサービスを考えています。
お礼
ありがとうございます。 2を検討していましたが1も考えてみることにします。