レンタルサーバー上の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)
宜しくお願いします。
No.5ベストアンサー
- 回答日時:
しばらくアクセスできなかったので、だいぶ日が経ってしまいましたが、まだみてますか?
>1.excelから csv形式で保存
このcsv中にtableの全行のデータがあるなら、
>6.load 用のsql文実行 (全行追加)
この前に、table内の全行削除「DELETE FROM table_name」をしてから、全行追加すれば、全行置き換えになります。
>phpは少し触れます。
失礼しました。
phpで全自動化を行うなら、csvデータの量にもよるけど、
アップロードフォームに<textarea> でcsvの内容を入れて送信。量が多ければ、<input type="file">を使用。
受信側では、<textarea name="csv">のデータ$_POST["csv"]をMySQLデータ領域にcsvファイルとして書き出したのち、
「ファイル書き込みは、PHPマニュアルのint file_put_contents ( string filename, string data [, int flags [, resource context]]) あたりの関数をチェック」
MySQLに接続して、「接続方法はPHPマニュアルのMySQL関連関数を熟読のこと」
table内の全行削除のSQL文とload 用のsql文とを実行
と言う手順になるかな。
一遍に作ろうとせず、一つ一つ実行確認しながら組み上げていくとよいです。
参考URL:http://jp.php.net/manual/ja/
返事大変遅くなり申し訳ございません。
そしてありがとうございます。
アレから、いろいろと試行錯誤して実行しているのが、
phpMyAdminでMySQLに二つのテーブルを作成して、
アップロード用テーブルと実際に反映させるテーブルにわけて、
アップロード用テーブルから、phpMyAdminのエクスポートで書き出して、テーブル名を一括変更してから、反映させることにしました。
アップロード方法は自力で登録フォームを作成して、登録する事に成功しました。
まだ、ブラウザ上での一覧表示、検索、編集機能等はないのですが、
これから作っていくつもりです。
今回の件は大変勉強になりました。
ありがとうございます。
No.4
- 回答日時:
load文は追加です。
同じcsvファイルに対して2回実行すると、2重ロードエラーになります。>phpで専用プログラム
ftpソフトの起動の手間を省くための、ファイルアップロード用と言うだけです。
よけいな説明しすぎたようです(どうやら、phpプログラムもまだ書けないようですので)。まずは、プログラミングの必要のない以下の手順でちまちまやって下さい。
1.excelから csv形式で保存
2.ftpソフトを起動
3.MySQLから見えるデータ領域へcsvファイルをアップロード
(アップロード先を訂正、load文を実行するのはMySQLなので)
4.ブラウザを起動
5.phpMyAdminにアクセス
6.load 用のsql文実行 (全行追加)
追加ではなく、既にあるレコードの上書き変更ならcsvで一気にはいきません。
変更レコード毎に、update文を作る必要があります。
まずはSQL文を理解しないことには、次には進めないと思います。
http://dev.mysql.com/doc/refman/4.1/ja/
参考URL:http://dev.mysql.com/doc/refman/4.1/ja/data-mani …
この回答への補足
ありがとうございます。
phpMyAdminでloadするのですね。
ローカル上に常に最新のデータ(excel又はcsvデータ)を保持している場合、
phpMyAdmin上でフィールドの内容を毎回削除して、一括登録していくことはできないのでしょうか?
phpは少し触れます。こちら側で管理していく上で、mysqlへ登録する一番最適な方法を探しています。
宜しくお願いします。
No.3
- 回答日時:
csvファイル経由でできませんかね。
excelから必要データをcsvファイルに変換出力して、そのファイルをphpMyAdminの実行できるサーバーへアップロードしたうえで、
以下のsql文を実行すれば、csvの一行がtableの一行相当で一遍にインポート出来るはず。
load data infile 'taisyo.csv' into table tablename fields terminated by ',' enclosed by '"' lines terminated by '\r\n';
csvファイルの項目順やデータ型はtableの設定に先に合わせておくこと
taisyo.csv は、phpMyAdminから見えるところに置くこと
最後の改行コード指定は、MACだと'\r' だったと思うが、MAC版excelでcsv出力した時どうなるのかは、調べてみて下さい。
また、ftpでのアップロード時にアスキー転送すると、サーバー側の改行コードに変換されるのも要注意。
phpMyAdminにファイルアップロード機能があればそれを使えばよいですが、なければ、phpで別に専用プログラムを作っての実行でもよいでしょう。
この回答への補足
ありがとうございます。
>load data infile 'taisyo.csv' into table tablename fields terminated by ',' enclosed by '"' lines terminated by '?r?n';
試してみようと思うのですが、これは、上書きされるのでしょうか?追加されるのでしょうか。
phpで専用プログラムというのは、
INSERT INTO table ('name') VALUES ('$name');
などに、該当する$nameの部分をCSVに記述されている値を代入してやって、データベースに登録!ってことでしょうか?
もし、それがあれば、ローカル上にある最新のexcelデータを上書き登録できるということなのでしょうか。もしくは追加していけるということなのでしょうか?
No.2
- 回答日時:
ちょっと質問本筋と関係がないVBAの話をしてしまい、惑わせてしまうようで心苦しいですが。
Insert文が記述されたファイルを作ればインポートできますね、というのが前提のお話です。
なので、VBAでもC#でも、何でも良いとは思います。
ただ、VBAは、エクセルに付いているプログラミング環境なので、都合が良いという思いから、前回そのように書きました。
>VBAを使用することによって、ExcelファイルがSQLに変換されると考えてよかったでしょうか
変換というより、”Insert文が羅列されたファイル”を出力するプログラムを書くということです。
前回仰っていたODBCによるデータベースへのアクセス・データ入力も可能だと思います。
(やったことはないので、だと思います、にしておきます^^;)
が、レンタルサーバが、ODBCによる接続を許す設定になっているとは思えないので、今回のケースではムリ※だと思います。
※その理由
http://www.mysql.gr.jp/Manual/mysql-3.23.16/manu …
Grant文で、ODBC接続ユーザに「grant ~ to ユーザ@"192.168.0.%"」的な権限付与しないといけないらしいので、レンタルサーバ屋さんとしてはムリなような気がします。
IDとパスワードがあるから大丈夫なのかな?
横道にそれました。
ツラツラ書きましたけど、要はエクセルとかCSVとかのファイルを指定してドンで、ラクラクImportはムリじゃね?というのが主旨です。
Insert文を全データ分作るしか思いつかないなぁ、というところです。
No.1
- 回答日時:
わたしの環境だと、インポートはSQLしか受け付けないようで、その他の入力形式が許されるのかは知りません。
Excelファイルをダイレクトに読む込むのと違って、SQLファイルへ変換する工程がひとつ増えますが、VBAなどを利用して、insert文記述ファイルを作成するのが、近道なような気がします。
for cells(1,1) to cells(1,1).currentregion.rows.count
buf = buf & "insert into tab values ..."
loop
で、変数bufの内容をファイル書き込みすればインポートファイルが比較的簡単に作成できますね。
ただし、250行程度置きに区切り(一つのInsert文にする)を入れないとわたしの環境だとエラーになりました。
※行数と、エラー内容は忘れました。
ちょっと質問本筋から外れているようなので、このへんで。
ありがとうございます。
VBAですか、まだ聞いたことくらいしかない物なのですが、
それで可能であるならば、今から調べていきたいと思います。
VBAを使用することによって、ExcelファイルがSQLに変換されると考えてよかったでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- フリーソフト 色々な形式の個人情報を後で参照しやすいようWindow10で管理したいのですが、どんな方法があるの? 1 2023/04/29 16:46
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- PHP PHPmyAdminに登録したデータをどうすればWordpressに反映できますか? 1 2023/08/25 17:04
- Excel(エクセル) Excel VBAについてです。 少しだけ知識はあるのですが、 うまくいかなかったので 質問させてい 3 2022/09/13 18:40
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Excel(エクセル) iphonからone driveに保存してあるExcelを閲覧すると表示の仕方がちがうデータ 2 2022/12/21 13:51
- PostgreSQL PostgressからMySQL(MariaDB)へ構造を変更する際のTimestamp等について 2 2023/04/04 12:09
- Windows 10 explorerをedgeで開く方法 2 2022/06/05 14:59
- SQL Server DBのテーブルの設計ができず困っています。 2 2023/06/29 16:43
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
sql*loader 数値のロード
-
BCPコマンドについて
-
CSVを1行しかインポートしない...
-
作成したレコードセットのCSV出...
-
データベースファイル(.db)を開...
-
PL/SQLで@ファイル名が反応しま...
-
あるDBから別のDBのテーブルをs...
-
PL/SQLをWindowsのBATファイル...
-
mysqlにおけるホストのパーセン...
-
数字で「そ」と「り」
-
SQL*Loaderでのデータロード
-
バッチファイルではパスワード...
-
comment on columnについてわか...
-
accdbファイルの最適化
-
mySQLのデータベースにhtmlのコ...
-
ACCESSからリンクでのレコード...
-
DBファイルの中身を直接見れな...
-
create databaseがうまくいきま...
-
Mac Gimp(Painters)ブラシ追加方法
-
料理サイトを作るにあたって・・・
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
sql*loader 数値のロード
-
作成したレコードセットのCSV出...
-
MySQL Date型にNULLが設定でき...
-
CSVを1行しかインポートしない...
-
MySQLで連続csvファイルを読み...
-
BAT処理でCSVデータのインポート
-
sqlite3でcsvのインポートがで...
-
大容量CSVのインポート方法を教...
-
BCPコマンドについて
-
データベースからWordpressを復...
-
SQLサーバーにcsv.ファイル...
-
ACCESS VBA でのCSV取込エラー
-
insertを用いてテーブルにレコ...
-
MySQLのLOAD文を使ってCSV...
-
CSVインポート,日本語文字化け
-
csvファイルのヘッダとカンマの...
-
mysql .txtのファイルを変換? ...
-
MySQLにEXCELやCSVなどでの一括...
-
pathを指定してCSVをインポート...
-
【Access2000VBA】CSVファイル...
おすすめ情報