• 締切済み

インターフェースからCSVを取り込んで、MySQLにインポート

インターフェースからCSVを取り込んで、MySQLにインポート ブラウザのインターフェースからCSVファイルを選択して、MySQLにインポートするようにしたいのですが、 (1)ファイルのアップロード (2)サーバー上にある(アップロードされた)CSVファイルをMySQLにインポート という手順で処理するほかないでしょうか? ローカルのCSVファイルを直接MySQLにインポートするような画期的な方法(ライブラリなど)あったらいいなと思い質問します。 PHPのバージョン:5.2 MySQLのバージョン:5.1 です。 まだ基本設計の段階なので、具体的な質問になっておらず申し訳ありませんが、 よろしくお願いします。

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

みんなの回答

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

CSVファイルの場所がローカルで、MySQL DBの場所がサーバー側(物理的に別の場所) であるかぎり、クライアント側から意識してサブミットしてもら うしかないと思います。(勝手に取ってくるのはまず不可能) 後はJAVAとかCの送信プログラムを<object>や<aplet>で配信して、 クライアント側で実行してもらうとか...<=ほとんどフォームのサブミットと 変わらない。

関連するQ&A

  • CSVファイルをMYSQLにインポート

    先日からMYSQL+PHPの勉強をはじめました。 データベース構築の際、以前作成したCSVファイルをMYSQLのテーブルとして 利用したいと考えております。 そこで、MYSQLコマンドより、 LOAD DATA LOCAL INFILE 'ファイル名.csv' INTO TABLE テーブル名 FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n'; Query OK, 0 rows affected (0.04 sec) Records: 102 Deleted: 0 Skipped: 102 Warnings: 0 とCSVファイル自体が悪いのかSQL文に問題がるのかインポートがうまくいきません。。 ちなみにCSVは  0,2011/6/2 0:00,80.94,81.32,80.55,80.92 0,2011/5/25 0:00,81.94,82.17,81.8,81.95 0,2011/5/23 0:00,81.77,82.04,81.32,81.99 環境はphpdevで一括でインストールした phpadmin: バージョン2.3.2 MYSQL: MySQL4 apache: 1.3.27 初心者で基本的な質問かもしれないですがどうかご教授お願いします。

    • ベストアンサー
    • MySQL
  • csvファイルをMySQLにインポートしたい

    phpでcsvファイルをフォルダにアップロードし、これをMySQLにインポートするプログラムを作成しています。 以下のソースを実行したところエラーが発生しました。 -----food.csv---------------------------------------------------------------------- "No","name","price" "1","うどん","100" "2","ぱすた","500" "3","カレー","300" ---------------------------------------------------------------------------------- -----BaseDAO.php------------------------------------------------------------------ <?php class BaseDAO{ function connect(){ try { $dsn = "mysql:host=localhost;dbname=food"; $option = array( // エラーモードを例外スローに設定 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // local ファイルからload可能にする PDO::MYSQL_ATTR_LOCAL_INFILE => true ); $user = 'username'; $password = 'password'; $pdo = new PDO($dsn, $user, $password, $option); $pdo->exec("SET NAMES utf8"); return $pdo; //var_dump($pdo); } catch (PDOException $ex) { print($ex->getMessage()); die("データベース接続に失敗しました"); } return null; } function disconnect($dao){ $dao = null; } } ?> ---------------------------------------------------------------------------------- ------uploadcsv.php----------------------------------------------------------------- <?php require_once 'BaseDAO.php'; //csvファイルのアップロード if (is_uploaded_file($_FILES["upfile"]["tmp_name"])) { //「files」という名前のフォルダを同じ階層に設置。ここにCSVファイルをアップロード if (move_uploaded_file($_FILES["upfile"]["tmp_name"], "files/" . $_FILES["upfile"]["name"])) { chmod("files/" . $_FILES["upfile"]["name"], 0644); //fileパス $file = "files/" .$_FILES["upfile"]["name"]; $sql_src = <<<SQL LOAD DATA LOCAL INFILE %s INTO TABLE `%s` CHARACTER SET sjis fields terminated by ',' enclosed by '"' lines terminated by '\\r\\n' IGNORE 1 LINES SQL; $table= 'food'; //テーブル名 $inport=new BaseDAO(); //インスタンス作成 $pdo=$inport->connect(); //pdoクラスに接続 $sql = sprintf($sql_src , $pdo->quote($file), $table); //sql文の実行 $stmt = $pdo->query($sql); echo "インポートが完了しました!"; //失敗したとき } else { echo "ファイルをアップロードできません。"; } } else { echo "ファイルが選択されていません。"; } ?> -----index.html--------------------------------------------------------------------- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>sample</title> </head> <body> <form action="uploadcsv.php" method="POST" enctype="multipart/form-data"> ファイル:<br> <input type="file" name="upfile" size="30"><br> <br> <input type="submit" value="アップロード"> </form> </body> </html> ---------------------------------------------------------------------------------- --------foodテーブルを作成するSQL文------------------------------------------------ CREATE TABLE IF NOT EXISTS `food` ( `No` int(11) NOT NULL, `name` varchar(50) NOT NULL, `price` varchar(50) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ---------------------------------------------------------------------------------- 実行したところ以下のエラーが発生しました。 Warning: PDO::query() [pdo.query]: LOAD DATA LOCAL INFILE forbidden in C:\xampp\htdocs\food\uploadcsv.php on line 30 <当方のPC環境> phpMyAdmin:3.3.9 PHP: 5.3.5 Apache 2.2.17 MySQL 5.5.8 XAMPP version 1.7.4 フォルダ(files)にcsvファイルがアップロードされているところまでは確認できましたが、MySQLにインポートされていないようです。 BaseDAO.php内の「PDO::MYSQL_ATTR_LOCAL_INFILE => true」が効いていないように思えます。 初歩的な質問で凝縮ですが、原因を教えていただきたく存じます。

    • ベストアンサー
    • PHP
  • MySQLデータベースにcsvファイルインポートで、エラー

    csvファイルインポートで、エラー phpMyAdminからMySQLデータベースに、csvファイルのインポートを試みたところ、 「CSV 入力のフィールド数が不正です(行: 17)」と表示され、うまくいきません。 データベースの中を確認すると、60レコードのうち、15レコードまでは正常にインポートされています。 元のcsvファイルを確認しても、mysql側とフィールド数は一致しており、問題はないように見受けられました。 phpMyadminのバージョンが、2.6.1-pl3から 2.10.0.2に変わった後、上記の問題が発生するようになりました。 よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • mysqlでCSVインポートでトランザクション管理出来る

    只今、mysqlを使用して開発しております。 行き詰まっておりまして 大変申し訳ありませんが、ご教授の程、よろしくお願いいたします。 要件は以下になります。 ・CSVファイルデータをインポートする。 ・CSVファイルは複数なので、全ての処理が終わった段階でコミット・もしくはロールバックする。 (トランザクション管理が出来ればよいです。) ※LOAD DATA INFILEでトランザクション管理しようとしたのですが LAODのトランザクション管理は5.1系じゃないと出来ないようですので、 出来ませんでした。 mysqlのバージョン :5.0.24

    • ベストアンサー
    • MySQL
  • CSVファイルのインポートについて

    宜しくお願いします。 CSVファイルをインポートしようとして、四苦八苦しています。item.csvというファイルをitemという名前のテーブルにインポートしようとしています。 load data local infile "item.csv" into table item fields terminated by ','; とコマンドを入力すると、 The used command is not allowed with this MySQL version というエラーが返されます。そこで、 load data infile "item.csv" into table item fields terminated by ','; と入力すると、 Access denied for user: '****@localhost' (Using password: YES) というエラーが返されます。 csvファイルの置き場所も解らないので、同じサーバの/public_html/test/php/csv/item.csvという位置と、/public_htmlよりもう一階層上のフォルダにitem.csvというファイルをアップしてあります。 相対パスやサーバがどの程度の階層まで検索してくれるのか解らないので、絶対パスでも指定してみましたが、全く同じエラーが返されてきました。 エラーの内容を翻訳してみたところ、 The used command is not allowed with this MySQL version 「使用されたコマンドは、このMySQL版で許されない」 Access denied for user: '****@localhost' (Using password: YES) 「ユーザー:『****@localhost』(パスワード:YESを使うこと)のために許されないアクセス」 という意味になりました。正直、どうすればいいのかさっぱりわかりません。この状況の打開策をご教授頂ければ助かります。何卒、宜しくお願い致します。尚、MySQLのバージョンはレンタルサーバの情報によると、「3.23.××以降」となっています。

    • ベストアンサー
    • MySQL
  • PHPでMysqlにCSVをインポートす文字化け

    お世話になります。 文字化けが解消できずに困っています。 PHPからローカルXAMPPのMYSQLにCSVでデータを上げたいのですが、日本語が文字化けして表示されます。秀丸テキストエディタで可能な限りのエンコードを試しましたが解決できず、サーバ側のエンコード設定も確認しましたがutf8_unicode_ciです。 Mysqlの管理画面のsqlから実行しても同様の結果です。 もう、色々やり過ぎてPHPが悪いのかMysqlサーバの設定なのかCSVの問題なのかわからず途方に暮れています。 諸先輩方でお分かりになられる方がいらっしゃいましたら是非、お知恵を貸してもらえませんか。 PHPのソースです。 ------------------------------ $host = "localhost"; $mysql_user = "root"; $mysql_password = "password"; $db = "utsun_db"; $cn = mysql_connect($host,$mysql_user,$mysql_password); if(!$cn){ die("db connect Error"); } if(!(mysql_select_db("$db"))){ die("db select error"); } $file = '"c:/tablea.csv"'; $sql = "LOAD DATA LOCAL INFILE $file INTO TABLE tablea FIELDS TERMINATED BY ',';"; $query = mysql_query($sql); mysql_close($cn); ----------------------------- CSVの中身 N551 佐々木 37 N552 伊藤 41 N553 斉藤 31 N554 井上 43 N555 阿倍 31 ----------------------------- Mysqlの方ではこのように表示されています N552 伊藤 41 N553 斉藤 31 N554 井上 43 N555 阿倍 31 ほんとうに困っております宜しくお願いします。 環境 Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7 phpMyAdmin バージョン情報: 3.5.2.2, 最終安定バージョン: 4.0.4.1

    • ベストアンサー
    • MySQL
  • MYSQLのcsvインポートについての質問です。

    MYSQLのcsvインポートについての質問です。 myadminからEXCELのcsvのインポート作業を行っております。 日本語等は、sift-jisに変換して正常に表示されます。 しかし、電話番号が表示されません。 インポートは正常に行われていると思います。(インポートの際に表示されるコメントで確認) ページの遷移の際には一瞬データが見えます。 また、SQLでデータ追加を行った場合には正常に表示されます。 電話番号のデータは123-123-1234です。 フィールドはvarchar(16)です。 どなたか、お分かりになる方よろしくお願いいたします。

  • MySQLにCSVファイルを入れる方法

    MySQLでデータベースを構築しています。CSVファイルにデータを構築していますがMySQLにインポートする方法が解りません。どうかおしえていただけませんでしょうか?

  • CSVをMYSQLにインポートすると文字化けする

    XAMPPでmysqlを使ってます。 CSVをインポートするとUTF-8が文字化けしてしまいます。詳しくわかる方いましたらお知恵をお貸しください。 まず、mysqlの設定ですが show variables like 'char%'; をおこなうと +--------------------------+--------------------------------+ | Variable_name | Value | +--------------------------+--------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | C:\xampp\mysql\share\charsets\ | +--------------------------+--------------------------------+ 8 rows in set (0.05 sec) となっています。 次に、アップロードするCSVですが、 1回目は、terapadを愛用しているので、terapadの機能でUTF-8に変換して保存したのですが、インポートすると文字化けしてしまいました。 次は、エクスプローラーでUTF-8に変換したファイルを読み込むと文字化けしており、エクスプローラーのエンコードで文字コードをUTF-8に変換し保存したものを、CSVに変換してインポートしたのですが、やっぱり文字化けしてしまいました。 私の知識ではこれ以上手がないのでなにかあたらしい突破口や間違いがあれば教えてください。

    • ベストアンサー
    • MySQL
  • MySQLにEXCELやCSVなどでの一括登録

    レンタルサーバー上のMySQLにローカル上のEXCELで作成するデータを登録しようとしています。 過去ログ等を調べたのですが、自分で質問することにしました。 http://oshiete1.goo.ne.jp/qa1244588.html MySQLとPHPでwebに公開するサイトを作っています。 データベースはphpMyAdminより操作しています。 データ登録時なのですが、登録する項目(フィールド)と、件数(レコード)が多いので、 phpMyAdminだと一度に登録できるのが、2件とブラウザ上での作業になるので、 間違いや、確認等の効率がかなり悪くなります。 エクスポートでEXCELやXML、CSVなどがあるので、インポートでも使えるのではないかと考えました。 そこで過去ログやweb上で情報を探し、CSVなどをインポートしてみたのですが、エラーが表示されます。 過去ログで見つけました、ODBCドライバというのは必要なのでしょうか。 またそれはレンタルサーバーでも使用可能なのでしょうか。 EXCELなどのソフトを使って、ローカル上でデータを作成・管理したいと考えています。 何か良い方法はないでしょうか。 環境: Mac OSX.4  (基本Macで作業しています) Windows XP sp2 レンタルサーバ: MySQL 4.1.10a phpMyAdmin 2.6.4-pl4 PHP4(ver.4.3.8) 宜しくお願いします。

    • ベストアンサー
    • MySQL

専門家に質問してみよう