MySQLにCSVデータをインポートするPHPスクリプト

これは、あなたのデータベースにCSVデータをインポートすることができるような簡単なスクリプトです。 あなたは、単に、適切なフィールドを編集してcsvファイルと一緒にアップロードし、ウェブからそれを呼び出すと、それは残りを尽くすことができるため、これは便利だ。

それは、あなたが、それは昏睡状態であるかどうか、このcsvファイルでそれはまた、行区切り文字を選択できるようにタブなどの区切り文字を指定することができますあなたがファイル(データのSQLダンプとも呼ばれる)への出力を保存することができます。

また、通常は自動インクリメントの整数主キーである各行の先頭に空のフィールドを含めることが可能に。

あなたがphpMyAdminを持っていない、または、ログインの手間を必要と数回のクリックのソリューションを好むしていない、または、単純にコマンドプロンプト男である場合、このスクリプトは、主に有用です。
単にデータをダンプしようとする前にテーブルがすでに作成されていることを確認します。
もしバグレポートを得た場合親切にコメントを投稿する。


ここにファイルをダウンロード

134コメント

午前6時31分でジェイク 2007年2月25日

非常に有用な、ありがとう。

12:17でS.マルティネス 2007年2月22日

私は通常、phpMyAdminを使用するが、真の、ケース内の1つはそれがインストールされていない、とシェルアクセスを(共有ホスティングプロバイダのほとんどのような)を持っていない、これは非常に便利になることができます。

レンLulow 20:11で2007年2月28日

たくさんの時間のこの保存されたたくさんのありがとう! ニーススクリプト。

[...]さて、今日は私がPHPのコードを使用して、SQLにあなたのcsvファイルを取得する別の方法をご紹介したい。 コー​​ドのこの部分に対して、完全な信用は伝説になります。 あなたが日付をダンプする前にデータベースがすでに作成されていることを確認する必要があります。 /************************************************* *******************************************/ /時*コードのhttp: / / legend.ws /ブログ/ヒント-トリック/ CSV - PHP - mysqlのインポート/ / *適切な値を反映するために、下記のエントリを編集して/****************** ************************************************** ************************/ $ databasehost ="localhost"を、$ databasenameは="テスト"; $ databasetable ="サンプル"; $ databaseusername ="テスト"; $ DATABASEPASSWORD =""; $ fieldseparator ="、"; $ lineseparator ="N"、$でcsvfile ="bbqrest.csv"; /***************** ************************************************** *************************/ / *あなたはこれらのレコードの先頭にamptyのフィールドを追加しますか? もしAUTO_INCREMENT整数/ *とcsvファイルがレコードの前に空のフィールドなどがないという最初のフィールドを持つテーブルがある場合、/ *これは便利です。 / * yesのセット1となしの場合は0。 注意:あなたがわからない場合は1に設定しないでください。 この余分なフィールドがテーブルに存在しない場合は/ *これは、間違ったフィールド内のデータをダンプすることができます/***************************** ************************************************** *************/ $ addauto = 0; /****************************** ************************************************** ************/ / *このファイルでのmysqlのクエリを保存しますか? はい$を設定した場合は1に保存する。 /ファイルの*パーミッションは777に設定する必要があります。 どちらかのftpを通じたサンプルのファイルをアップロードし、/ *アクセス権を変更する、またはプロンプトで実行:&&chmodの777 output.sqlタッチoutput.sql /******************* ************************************************** ***********************/は$セーブ= 1; $ outputfileに="output.sql"; /*********** ************************************************** *******************************/ [...]

12:44時hfvd 2007年10月24日

こんにちは、列1のオートインクリメント値の小さな変更(idフィールド)

変数$カウントを参照してください。

OLA、エンリコ。

/ / $ CON = @ mysql_connect($ databasehost、$ databaseusername、$ DATABASEPASSWORD)またはダイ(はmysql_error());
/ / @ mysql_select_db($ databasenameは)またはダイ(はmysql_error());

$行= 0;
$クエリ="";
$ linearray =配列();

$は、カウント= 0;

foreachの($行として分割($ lineseparator、$ csvcontent)){

$カウント= $カウント+ 1;

$行+ +;

$行=トリム($行、は"\ t");

$行= str_replace ("'"," \'"、$行);

$ linearrayは=爆発する($ fieldseparator、$行);

$ linemysql =崩壊する("','",$ linearray);

`あなたのDBテーブル`VALUES('$ count'という、'$ linemysql ');";に$クエリ="を挿入

$クエリ.= $クエリ。 は"\ n";

@するmysql_query($クエリ);
}

/ / @ mysql_close($ CON);

MySQLにCSVデータをインポートするPHPスクリプト:いつもの調子で[...]は、ここでその著者がMySQLにCSVファイルをインポートすると述べている既製のスクリプトです。 [...]

» CSVインポートの午前10時29時2008年6月7日

[...] /******************************************** ************************************************/ /で*コードhttp://legend.ws/blog/tips-tricks/csv-php-mysql-import/ / *適切な値を反映するために、下記のエントリを編集して/************* ************************************************** *****************************/ $ databasehost ="localhost"を、$ databasenameは="XXXXX"; $ databasetable ="XXXX" ; $ databaseusername ="XXXX"; $ DATABASEPASSWORD ="XXXX"; $ fieldseparator ="、"; $ lineseparator ="N"、$でcsvfile ="xport/2008_BF.csv"; /********* ************************************************** *********************************/ / *あなたはこれらのレコードの先頭にamptyのフィールドを追加しますか? もしAUTO_INCREMENT整数/ *とcsvファイルがレコードの前に空のフィールドなどがないという最初のフィールドを持つテーブルがある場合、/ *これは便利です。 / * yesのセット1となしの場合は0。 注意:あなたがわからない場合は1に設定しないでください。 この余分なフィールドがテーブルに存在しない場合は/ *これは、間違ったフィールド内のデータをダンプすることができます/***************************** ************************************************** *************/ $ addauto = 0; /****************************** ************************************************** ************/ / *このファイルでのmysqlのクエリを保存しますか? はい$を設定した場合は1に保存する。 /ファイルの*パーミッションは777に設定する必要があります。 どちらかのftpを通じたサンプルのファイルをアップロードし、/ *アクセス権を変更する、またはプロンプトで実行:&&chmodの777 output.sqlタッチoutput.sql /******************* ************************************************** ***********************/は$セーブ= 1; $ outputfileに="output.sql"; /*********** ************************************************** *******************************/ [...]

20:06でダニ 2008年8月25日

WOWはクールです...あなたのコーディングを読んだ後、アイデアを持っていた...たくさんの感謝

19:04 のSteve 2008年8月31日

総初心者 - (Macの場合)phpMyAdminの中にExcelのcsvファイルをインポートしようとしているうち私の髪を引き裂く。 正確な場所と私はこのPHPスクリプトと関係を知るのが大好きだ... ...?

12:39でジョセフ 2008年9月3日

スティーブ、

あなたが変更する必要がある変数を変更した後、Webアクセス可能なフォルダにこのスクリプトを配置します。 指定する必要があるかを調べるためにスクリプト内のコメントを読んでください。 その後、同じように、Webブラウザでスクリプトを呼び出す:

http://www.example.com/path-to-script/simplescvimport.php

ollyd午前6時35分で2008年9月9日

それはデータベースに送信されてからcsvファイル内のヘッダを防ぐために追加すると良いだろう。 または最初の行を引き出すと、列名としてこれらの値を使用してDBを作成するスクリプトを作成する。

12:11時Rengaraj 2008年9月12日

私はこのエラーファイルが見つかりませんを取得しています。 あなたが正しいパスを指定したことを確認してください。

12:16時Rengaraj 2008年9月12日

いずれかの応答の高速は、私が正しいパス(ルート)でcsvファイルのbbqrest.csvを持つことができます..

12:19 のSteve 2008年9月12日

Rengaraj、
csvファイルはPHPファイルと同じ場所にある必要があります。
また、あなたは本当に同じcsvファイル名を使用する必要はありません。
bbqrest.csvは例ですので、あなた自身でこのファイルの名前を置き換えます。

12:19でロビー 2008年9月24日

など、この行のようなフィールドの考慮しません。
fnameは、lnameの、"当社は、株式会社"、市、州、郵便番号

会社と株式会社は、2つの異なる列に分割さ。

14:27でロビー 2008年9月24日

よく、ここに私の以前のコメントへの修正は次のとおりです。

の間でこれを挿入します。

$ linearrayは=爆発する($ fieldseparator、$行);

...下記のコードスニペットを挿入する...。

$ linemysql =崩壊する("','",$ linearray);

見つけ、それを内破する前に一緒にすべての"スタッフ、より多くの原料"を維持します。

$ ="";
$ B ="";
= 0をqoutecount $;
{;($ xは-1 $ x = 0)のための
$ qoutecount + +;
するif($ qoutecount == 1)
$ = $ X、/ /ストアの最初のインスタンス
ELSEIF($ qoutecount == 2){
= 0をquotecount $;
$ B = $ X、/ /ストア番目のインスタンス
それをしない/ / THAT ... $に$に$ bからすべての要素をコンパイルし、新しい配列に$に$ bの後の要素に何かを無視する。
$ネバの=""; / /新しい文字列を初期化する。
$ Z $&&$ yは、= $($ zについて

14:27でロビー 2008年9月24日


、それは悪い配列の要素内に収まるので、/ /スキップする

$ newarray [$ Y] = str_replace ('"',",$ linearray [$ Y]);
$ linearray = array_values​​($ newarray)、/ /新しい配列にキーをリセットする
$ X + +;
}
}
}

ブラッド 14:43で2008年9月26日

私はそれの最初のほどは私のブラウザでだけコードを切断し、残り得る。 サイトの他の部分は動作するので、私はPHPが動作していることがわかります。
私はそのことを行うのphp5にアップグレードするのですか?

午前5時04時ASCASC 2008年9月27日

ブラッド、以前先週より、それをダウンロードした場合は、"<?"を置き換える最上部に"<?PHP'(スペースを削除)で

午前8時06時Roelofから 2008年9月30日

ロビーでは、あなたのほかのおかげで、それは非常に歓迎です。 残念ながら、それはすぐに私はそれをコピーするときに動作しません。 コー​​ドが2つのポストに分散されているので、私は何かが欠落していると思う。

ここで表示されるようにコードを確認すればいいでしょうか。 何かが欠落していますか?

22:26時フィリップ 2008年10月1日

こんにちは、素敵なスクリプトのおかげ。 それを実行するときに私が得られます。
致命的なエラー:30秒の最大実行時間は、63行上に超えて

私はこれを回避するために何かできることはありますか?

0:27で、 管理者 2008年10月6日

インポートしようとしているファイルの大きさはどれくらいです?
どんな場合でも、最初の開始タグの後に次の行を追加してみてください。
関数set_time_limit(300);
これは、実行時間の5分(300秒)にスクリプトを放棄します。
0で300を交換すると、必要に応じてそれが同じくらい時間がかかるようになります。

フィデルハメ撮り午前5時12時2008年10月10日

こんにちはすべて、

私はあなたのコードに若干の変更を行いましたので、それが必要として、CSVインポータとして動作します。

CSV -最初の行は、インポートしたいカラム名を保持するため、foreachループを変更する必要があります。
foreachの($行として分割($ lineseparator、$ csvcontent)){

$行+ +;

$行=トリム($行、は"\ t");

$行= str_replace("\ rを","",$ライン);

/ * CSVファイルの最初の行から列名を取得* /
するif($行== 1){
$列=爆発する($ fieldseparator、$行);

$ columnsql =崩壊する(",",$列);

columnsql $をエコー;
継続する;
}

/************************************
この行は、特殊文字をエスケープします。 エントリがすでにCSVファイル内でエスケープされている場合、それを削除する
************************************/
$行= str_replace ("'"," \'"、$行);
/*************************************/

$ linearrayは=爆発する($ fieldseparator、$行);

$ linemysql =崩壊する("','",$ linearray);

するif($ addauto)
$ databasetable($ columnsql)の値('$ linemysql ');";に$クエリ="を挿入

$ databasetable($ columnsql)の値('$ linemysql ');";に$クエリ="を挿入

$クエリ.= $クエリ。 は"\ n";

@するmysql_query($クエリ);
}

18:10でログイン 2008年10月20日

ニース作業主任 ;-)

4:16でenim 2008年10月23日

それは、私はそれを挿入するデータベーステーブルに挿入していない..:(

9:28での遺伝子 2008年10月29日

私は唯一のデータベースにインポートされる私のCSVファイルの最初の行を取得することができます。
ここでログファイルのコピーは次のとおりです。

("、'2008 - 10 - 21'、'50'、'50'、'50'、これはノートの3行目です'、'これはノート2行目です'、'これは最初のノートのラインである"生産値に挿入"、'0000 - 00 - 00'、'0000 - 00 - 00'、'0000 - 00 - 00'、'456モーニングアベニュー"、"ステレオ512"、"ブルックリン"、'NY'、'10023'、 "ジョー"、"顧客1");
("、'2008 - 10 - 09'、'50'、'50'、'50'、'これは最初のノートのラインである',",",' 2008年10月9日"、'2008生産値に挿入-10-14"、'0000 - 00 - 00'、'456モーニングアベニュー"、"ステレオ512"、"ブルックリン"、'NY'、'10023'、'ジョー'、'顧客1');
'1 ',",",' 2008年10月14日Notesのを、生産値("、'2008 - 10 - 14'、'25'、'25'、'25'に挿入、'2008 - 10 - 17 '、'、'スイート123'NULL'、どこかに555'、'ニューヨーク'、'新しいY'、'10001'、'ジョー'、'名前1');
生産挿入
生産挿入
("、'2008 - 10 - 17'、'50'、'50'、'50'、'これは最初のノートのラインである',",",' 2008年10月3日"、0000プロダクションの値に挿入-00-00"、'0000 - 00 - 00'、'456モーニングアベニュー"、"ステレオ512"、"ブルックリン"、'NY'、'10023'、'ジョー'、'顧客1');
、生産値("、'2008 - 10 - 18'、'25'、'25'、'25'挿入'1 ',",",' 2008年10月4日注意事項"を、'0000 - 00 - 00どこかに"、'0000 - 00 - 00'、555'、'スイート123'、'NEW YORK'、'新しいY'、'10001'、'ジョー'、'名前1');
生産挿入
("、'2008 - 10 - 20'、'34'、'34'、'34'、'新しいノート',",",' 2008年10月6日"、'0000 - 00 - 00生産値に挿入"、'0000 - 00 - 00 ',",",",",",'ス​​ティーブ',");
生産値("、'2008 - 10 - 21'、'12'、'12'、'12'、'さらに新しいノート',",",' 2008年10月7日"、'0000 - 00 -挿入00'、'0000 - 00 - 00 ',",",",",",'マーク',");
生産挿入
生産挿入
生産挿入
生産挿入
"2008年10月12日',",",'後で依然として"生産値("、'2008 - 10 - 16'、'0'、'0'、'0'、、'0000 - 00 - 00に挿入"、'0000 - 00 - 00 ',",",",",",",");
生産値("、'2008 - 10 - 17'、'0'、'0'、'0'、'後も、2008年10月13日',",",'"、'0000 - 00 - 00に挿入"、'0000 - 00 - 00 ',",",",",",");
"2008年10月14日',",",'後で依然として"生産値("、'2008 - 10 - 18'、'0'、'0'、'0'、、'0000 - 00 - 00に挿入"、'0000 - 00 - 00 ',",",",",",");
生産挿入
("、'2008 - 10 - 01'、'3​​4'、'34'、'34'、'非常に最新の',",",' 2008年10月2日"、'2008 - 10 - 04生産値に挿入"、'2008 - 10 - 04 ',",",",",",'ブルース');
生産値に挿入(",");

それは20レコードを挿入すると言っているが、最初のものだけがデータベースにそれを行います。 任意の考え?

4:00 AMでMarkFromHawaii 11月19、2008

こんにちはすべて、

スクリプトをありがとう。 PHPとMySQLで私はnoobのは、そう私はこのような何かを本当に感謝しています。 私は限り生成するようになった私のブラウザでエラーメッセージ"ファイルが書き込み可能ではない、パーミッションをチェックしてください"。 誰かが777にパーミッションを設定する方法についてコメントを説明していただけますか? 私はExcelで生成される。csvファイルを使用している? 事前に感謝。

14:10で管理者 2008年12月1日

こんにちはマーク、

最初に、それはあなたが$ outputfileに変数で選択したファイルを参照している。
第二に、このファイルは書き込み可能である必要があります。 これは一般的に窓のある問題ではないとして私は、あなたがLinuxではなくWindowsを使っていると仮定します。
マシン、出力ファイルがあるディレクトリに変更し、型にLinux上で、単にSSHします:chmod 777ファイル名
ここで、'filename'は実際のファイル名です。
あなたは、SSH、多くのFTPクライアントのサポートのパーミッションの変更がない場合。 この目的のために、出力ファイルを含むフォルダにFTPで転送して、このファイルを選択して、このFTPソフトからパーミッションを変更するオプションを探します。 777にそれを設定、またはすべての人のために"読み取り、書き込み、実行"。

14:31 クリス 2008年12月18日

やあみんな、

このスクリプトを愛し、そしてそれが正常に動いていた、今突然スクリプトはレコードを挿入する習慣。 スクリプトが完了し、さらにレコード数を出力しますが、データベースを全く触れていない...

任意のアイデア?

感謝
C

17:35で管理者 2008年12月18日

親愛なるクリス、

置き換えてください。
@するmysql_query($クエリ);
付:
@するmysql_query($クエリ)またはダイ(はmysql_error());

そして私はそれはあなたを与えるのかエラーに知らせる

7:25でゲイリーピアマン 2009年2月23日

引用符の問題に関しては、あなただけのこれを使うことができます。

$ linearray = preg_split ("/,(?=(?:[^ \"] * \"[^ \"] * \ ")*(?![^ \"] * \ "))/", $ライン);

乾杯、
ギャズ。

スタンレーZdun 18:19で2009年8月24日

それは、データベースにこれをロードするために述べています

'\ n'で終了する'、'行によって終了テーブルテーブルのフィールドにデータをロードは、LOCAL INFILE'PATH';

私はパスとそのが入るテーブルを変更するが、それは私にエラーそれは間違った構文のコード1064を与える

誰も私にいくつか何をすべきかについて助言を与えることができる

感謝
標準

3:20で、 管理者 2009年8月26日

こんにちはスタンレー、問題は、単一引用符を使用することです。 ここにブログソフトウェアでは、それらを書き換えます。 単に'で置き換える'と'

PS:上記のコマンドは直接MySQLのプロンプトからデータベースにcsvファイルをロードすることです。 これはいいですが、上記のスクリプトとは関係ありません :)

クラウス 12:59で2009年9月11日

皆さん、こんにちは!

スクリプトが動作しているように見える...それは、mysqlにデータを書き込まないことexept ...
クリスと同様に:スクリプトが完了し、さらにレコード数を出力しますが、データベースを全く触れていない...しかし、私に指示:このcsvファイルの1レコードの合計が見つかりました。

私は間違って何をするか(PHPとMySQLでnoobのIM)

感謝
クラウス

エイドリアン 19:03で2009年9月13日

こんにちはすべて
私は新しいウェブサイトを構築するためにDrupalを使用しています、私は今が午前の課題は、私はそのためのテーブル、私は、CSVデータをインポートする必要があるにフィールドの一部を共有しているmysqlデータベースにCSVファイルからデータをインポートする必要があることですこのスクリプトは私のために働くだろう、同じデータベースの異なるセクションにありますか? 別の方法を使用して、このcsvファイルをインポートすることができない場合は?

どのような援助に感謝、助言しなさい。

よろしく
エイドリアン

20:16時Okoth 2009年9月18日

スクリプトをありがとう。 非常に理解できる。

どのように私はそれがフェッチするようにこのスクリプトを変更し、MySQLにインターネットからcsvファイルを保存することができます?

17:54で管理者 2009年10月3日

@エイドリアン
エイドリアンこんにちは。
Drupalは、あなたが述べたように、複雑なテーブル構造を持っています。 インポートするデータの種類によっては、それは、このデータは通常、ノードIDのような一般的な外部キーで、複数のテーブルに分割する必要がある可能性が非常に高いです。
残念ながら、上記のスクリプトはこれを行う助けになる。

17:58で管理者 2009年10月3日

@ Okoth
Okothこんにちは。

ほとんどの場合には、行33から54を取り除くと、この一行に置き換えることができます。

$ csvcontent = @キッチンポピュラー音楽("http://を。。。");

適切なURL(CSVファイルへの直接URL)でドットを置き換える

18:02で管理者 2009年10月3日

@クラウス
クラウスこんにちは。
CSVは、実際には単一のレコードが含まれていますか?

スクリプトはレコード数を出力する段階に達しているので、私は問題にならないようにそれがデータベース(行56から57)に接続しても失敗しなかったと仮定します。

データを挿入するクエリが失敗している可能性があります。
で88行を置き換えてみてください。
するmysql_query($クエリ)またはダイ(はmysql_error());

そして何を得るエラーを確認してください。

アンディBrotherton 14:14で2009年10月4日

こんにちは、

私は実際にこのスクリプトを使用したいと思いますが、私は私が間違ってやっているのかわからない。 私は、DBにロードされていないデータで、上記と同じ問題を得る。 それは、db内の行が、何もショーの正しい数を求めます。

私は88行@するmysql_query($クエリ)またはダイを(はmysql_error())に変更。

そしてこのメ​​ッセージを取得"列のカウントは行1での値の数と一致しません"

8:46で、 管理者 2009年10月5日

@アンディBrotherton :これは、クエリがデータベースのテーブルのそれと一致しない列の番号を持つレコードを挿入しようとしていることを意味します。

1)CSVファイルは、データベース内のテーブルと列の正確な同じ数を持っていることはよろしいですか?
2)このCSVファイルは本当にコンマでフィールドセパレータていますか? またはそれは、インスタンスのタブまたは他のです? それはコンマではない場合、12行目で$ fieldseparatorの値を変更する
3)テーブルにはすでにそれにデータをロードしようとする前にデータベース内に作成する必要があります。 あなたはそれを持ってよろしいですか?

農林水産省 2009年10月7日午前7:24時

どのように私は新しいファイルを挿入する前に私の既に一杯になっているテーブルを空にすることができますか?
または私は既に、既存の入力を更新できますか?

TRUNCATE、UPDATE? どのように私は、クエリでこれを入手できますか?

16:48で管理者 2009年10月8日

コマンドは次のとおりです。切り捨てテーブル名。

あなたは、58行目に以下を挿入することができます。
@するmysql_query("TRUNCATE $ databasetable");

しかし、これは可逆的でないです! ので注意が必要です

午前5時59でネイサン 2009年10月20日

こんにちは、それは私のレコード数を指示しますが、データベースにデータを入れていない

あなたが役立つことを願って

ネイサン

21:39時phpwebdesigner2010 2009年12月8日

私は、リモートサーバから自動的にデータをダウンロードする必要があります。 そのCSVファイル、および私はそれを解凍し、私が作成したMySQLデータベースにデータを格納する必要があります。 複数のデータベースがあります。 下記の最初のセクションでは、誰かに助けてくれたし、それが素晴らしく動作することをデータベースの一つです。 私は、cronジョブを設定し、それがスケジュールどおりに自動的にダウンロード。 しかし私はより多くのデータベースがあり、傾ける他の人が仕事に取り掛かる。

以下は、このセクションは正常に動作します!!
--------------------------

#!/ bin / bashの

deleteparam ='- DELETE -の後に';
#deleteparam ="
#ディレクトリ='ディレクトリ-接頭辞= / $ HOME / MyFolderという/ MyFolderという/'
ディレクトリ="
#userpwd ='- HTTP -ユーザ=何とか- HTTP -パスワード= blah'を

はtoupper(){
$ 1をエコー| TR"[:下:]""は[:upper:]"
}

#["$ 1"- z]の場合、次に
#エコー使い方:$ 0表
#終了する
#FI

リモートサーバのデータファイルのZIPは、=名前
ZIP =`はtoupper $ ZIP`

#zip内のファイルは、以下のいずれかです_
私のMySQLデータベースにデータテーブルの=名前を
DATA =`はtoupper $ DATA`

#RM $ TABLE.csv.zip
#RM $ DATA.csv

CD / $ HOME / MyFolderという/ MyFolderという/
#######は、住宅を取得

wgetの - O $ ZIP.csv.zip
スリープ10
#######は、解凍してください
PWD
ls - laと

解凍は、- o $ ZIP.csv.zip
スリープ10
#######は、それをロードする

wgetの-冗長$ deleteparam $ディレクトリ$ userpwd http://mywebsite/myfolder/import.php?table = $ DATA
スリープ300

######は、ファイルを削除

RM $ ZIP.csv.zip
RM $ DATA.csv
スリープ10
_ ---------------------------
この上記のすべてが素晴らしい作品

これは、私はヘルプが必要な何です
--------------------------
1。 私は写真をダウンロードする上記のファイルに追加するスクリプトが必要です。 あなたが以下に表示された場合、私は自動的にスクリプトが実行され、現在の日付と時刻を取得するスクリプトが必要です。 そこに、サーバーは最後の7日間から写真を取得しており、絶えず更新されます。 一度このスクリプトは、それは私が作成したテーブルにデータをダウンロードする実行される。

2。 その後、私は写真を持っているし、そのリモートサーバーから直接、実際の写真を取得するエントリを探して、mysqlデータベースに対してクエリを実行するスクリプトが必要です。 このcsvファイルは単に、私が特定のスポットで写真を取得するスクリプトを実行するために使用できるデータを写真をダウンロードしません。 下記を参照してください。
以下は、私が受け取った指示は次のとおりです。

INSTRUCTIONS
写真データは、HTTPによって取得されます。 写真データは、毎日1回更新され、CSVファイルとしてダウンロード可能です。 その後、私たちのイメージをサーバ上の画像に戻って指すようにCSVファイルからデータを使用してスクリプトを書くことができます。 データを返すようにURLのクエリ文字列のlast_updt>':MM:SS YYYYMMDD HH"の値を指定する必要があります。 フィールドのlast_updtは写真がリスト上で変更された最後の時刻の日付の値です。

あなたはあなたに提供されるログイン資格情報を使用してuser_codeとパスワードのプレースホルダ(XXXX)を交換する必要があります。

手順1:プライマリリストの写真データのCSVファイルを取得するには、以下のURLにアクセスしてください。

ステップ2:写真のテーブルのデータがCSV形式でダウンロードする必要があります。

ステップ3:YフラグとGoogleのイメージの場所に戻ってリンクできるデータにML番号を使用した。

次のように私たちの主な画像のディレクトリパスは次のとおりです。

##/リストをhttp://remoteserver/folder/folder/folder/Last3DigistsofML。JPG

- 例えば、リストの番号1899430の主な写真は、次の場所にあります。

http://remoteserver/folder/folder/1/430/1899430.jpg

次のように私たちの追加画像のディレクトリパスの構造は次のとおりです。

http://remoteserver/mlsphotos/full/PhotoPosition/Last3DigistsofML#/リスト#_photoPosition.jpg

- 例えば、リストの番号1899430のための2番目の写真は次の場所にあります。

http://remoteserver/folder/folder/2/430/1899430_2.jpg

マークCloyd 19:33で2010年1月3日

優れたスクリプト! 私は私が働いていたプロジェクトのために少しジャンプスタートを必要とし、これはトリックでした。

新しい行がchar(どちらか\ rまたは\ n、または両方)がまだ記録されていたので、私は奇妙な予告の何かがしかし、私はフォームで動作するようにスクリプトを変更していないと私は検索するために、最後のフィールドは、最大使い物にならないばかりしたという通知をしたMySQLのデータベースに格納します。

そのために、あなたが交換する場合:
$行= str_replace("\ rを","",$ライン);

付:
$行= str_replace('\ rを',",$ライン);

それは、新しい行の場合と同様、問題であることからのリターンを保持する、私は、重複したエントリで終了しないように、新しいレコードを挿入することができますちょっと何かが、更新が既存のレコードを追加しました。 私は、実際の新しい行のcharの同じ修正を行ったところ、以下のコードの上部には、次のように表示されます。

$ linemysql =崩壊する("','",$ linearray);

$ newlinemysql = str_replace('\ nは',",$ linemysql);

{($ addauto)場合

スイッチ($ databasetable){

ケース('アドレス'):

$ duplicatevals ="アドレス= VALUES(アドレス)、
街= VALUES(都市)、状態= VALUES(状態)、

ZIP = VALUES(zip形式)";

破る;

ケース('所有者'):

$ duplicatevals ="所有者名= VALUES(所有者名)、
housetype =のVALUES(housetype)、

addresskeyは= VALUES(addresskey)";

破る;

}

$クエリ="$ databasetable値(",'$ newlinemysql"への挿入)

ON DUPLICATE KEY UPDATEの

$ duplicatevals";

}他{

$ databasetable値に$ queryは、="を挿入('$ linemysql')

ON DUPLICATE KEY UPDATEの

$ duplicatevals";

}

また、私の形で私は、テーブル名を追加し、私はテーブルが[ブール]"addauto"かどうか、単一の入力として、ドロップダウンから(カンマ区切り)になりたいかどうか、その後simplecsvimportの上部に結果を分割するスクリプト。

最後に、あなたがのためのデータベース内のインデックスを設定することを忘れないようにしなければ、"DUPLICATE ONに..."仕事に、オートインクリメントがこのケースでは動作しませんので、自動インクリメントのテーブルでセカンダリインデックスを設定する必要がテーブルそのドン'Tのオートインクリメントとそれはあなたが行くしたいルートの場合、単一のインデックスを持つユニークなフィールドの仕事を持っている。

私はこれが誰かを役に立てば幸い!

乾杯!

マークキャンプ AM 12:10 2010年1月11日

こんにちは、

いくつかの変更を行いました。 "|"(パイプ)文字私のtxtファイルには、で区切られた3つの列を持っています。 スクリプトは、ファイルのデータを表示する行を数えますが、データベースにデータを入力していません。 すべてのコメント?

$ csvcontent =のfread($ファイル、$サイズ);

fcloseを($ファイル);

$ CON = @ mysql_connect($ dbhostの、$ DBUSERNAME、$ dbuserpassword)またはダイ(はmysql_error());
@ mysql_select_db($データソース)またはダイ(はmysql_error());

$ lineseparator ="します\ n";
$ fieldseparator ="|";

$行= 0;
$クエリ="";
$ linearray =配列();

$は、カウント= 0;

foreachの($行として分割($ lineseparator、$ csvcontent)){

$カウント= $カウント+ 1;

$行+ +;

$行=トリム($行、は"\ t");

$行= str_replace("\ rを","",$ライン);

/************************************
この行は、特殊文字をエスケープします。 エントリがすでにCSVファイル内でエスケープされている場合、それを削除する
************************************/
$行= str_replace ("'"," \'"、$行);
/*************************************/

$ linearrayは=爆発する($ fieldseparator、$行);

$ linemysql =崩壊する(""",$ linearray);

するif($ addauto)

インジケーターの値に変換します$ query ="INSERT('$ count'という、'$ linemysql ');";

インジケーターの値に変換します$ query ="INSERT('$ linemysql ');";

$クエリ.= $クエリ。 は"\ n";

@するmysql_query($クエリ)またはダイ(はmysql_error());

エコー"$ linemysqlします\ n";
}

rajdeo午前7時21分時2010年2月4日

それはファイルのコントロールからどのように機能するか私はそれを取得できませんでした。 第一閲覧と選択したファイルを、次にiが変更する必要がどこに提出することを意味

14:31時キシュ 2010年2月17日

これは私にとって非常に便利なコードです..
おかげで。

どのように私は完全なパス名を入力する代わりに、参照ファイルを取得することができます..

こので助けてください。

感謝

AM 11:26 ゲイリー 2010年3月2日

おかげで、このコードは本当に役立っている!

どのようにユーザーが参照してテーブルにインポートするCSVファイルを選択するフォームが表示されるようにするため、それを修正するか?

そしてまた、どのように私はそれがそうするたびに新しいファイルが送信されていることが現在のテーブルに格納されているものオーバーライドするようになるでしょう?

多くの感謝

data_typeは 12:03で2010年3月5日

私は私が人々のPL / SQLとXMLを教える手助けをするために使用できるいくつかの非常に良好な特性があったことを[...]。 MySQLにCSVデータをインポートするmysqlPHPスクリプトにCSVデータをインポートするITipsとテクニックPHPスクリプト... [...]

12:39でジェレミー 2010年3月9日

こんにちはすべて、

どうやってデータベースの列に"日、月の日付、2010"と状態"PROV、状態"の日付でこれらのCSV引用符が含まれていますか? 私は多くの例を参照してくださいしかし、私はそれを動作させることができません。 任意の助けが良いでしょう。

AK、10037591,1、"2010年3月9日(火曜日)夜三時55分16秒"、59.7151、-151.4434,2.7,75.90,32、"キーナイ半島、アラスカ"
THX

12:28で管理者 2010年3月16日

@キシュ
現在のコードは/ファイルをアップロードするためにブラウズすることはできません。
あなたは(パスを除く)単にPHPスクリプトと同じディレクトリにCSVファイルを置いて、単純にファイルのnameに等しくなるように$でcsvfile変数を設定することができます。

12:30 PMでの管理者 2010年3月16日

@ゲイリー
あなたは、@あるいはmysql_query("TRUNCATE $ databasetable")を使用することもできます。右@ mysql_select_dbステートメントの後に。
このアクションは、データを一掃し、可逆的ではないになるので、注意してください。

AM 10:52 平和 2010年4月13日

どのようにcsvファイルのヘッダーにある最初の行/列を省略して、DBにデータの残りの部分を挿入するのですか?

11:00 AMでカール 2010年4月18日

ゲイリーと同じように、私は既存のレコードを上書きできるようにしたいが、それを更新することにより、データベース内のすべてのデータが削除されない。 どこかこの辺にSP:

するif($ addauto)
$ databasetable値(",'$ linemysql ');";に$クエリ="を挿入

$ databasetable値('$ linemysql ');";に$クエリ="を挿入

どのようにレコードが存在するかどうかを確認するだろうし、挿入するのではなく、更新する?

AM 11:22 平和 2010年4月20日

スクリプトは、CSVファイルから余分な行を読んでいる。 CSVファイルが25のレコードが含まれている場合などには、26レコードがあることを示します。 私が間違っていますどこを教えていただけますか?

私はそれが最初の行であり、その最初の行ならループを続けるかどうかを確認するために追加しました。

感謝

6:02でAp.Muthu 2010年4月28日

以下は私のためのトリックでした。
LOAD DATA LOW_PRIORITY LOCAL INFILE
'C:\ \ DocumentsとSettings \ \ Administratorの\ \デスクトップ\ \ SigmaS1.csv"
TABLE`mydbという`。``mytableはINTO
'\ \ FIELDS ESCAPED BY'
'、'で終了
OPTIONALLY'"'で囲ま
'\ r \ n'の、LINES TERMINATED BY
(`ユーザー`、`pwdの`、`SNO`、`AMT`、`ActiveRec`);

アレハンドロ 4:03で2010年5月11日

これは私にとって非常に有用であった...しかし、私は大きなファイルを読み取るための修正を行うために必要。 私は、最初は混乱し、しかし、その後、スクリプトはメモリ(右?)にファイル全体をロードを実現した。 ので、ここで一度に一つの行を読み取るコードのカスタマイズされたバージョンは、です。 それはのように見えるファイルを読み込み
ファイルを開始します。
2,3、-1
1、-2,4
最後のファイル(多くの多くの値を持つ)。 私は、各行がテーブルのエントリと行番号だけでなく、テーブルのサイズを(後で変更される)を表す最初のIDとIDになりたかった。

<?PHP

/********************************/
で/ *コードhttp://legend.ws/blog/tips-tricks/csv-php-mysql-import/
/ *適切な値を反映するために、下記のエントリを編集します。
/********************************/
$ databasehost ="localhost"という。
$ databasenameは="tomoku";

databaseusername ="root"を$;
$ DATABASEPASSWORD ="ルート";
$ fieldseparator ="します\ n";
$ lineseparator ="します\ n";

/ /このコードは、データベースに畳のファイルを読み込み、

$ CON = @ mysql_connect($ databasehost、$ databaseusername、$ DATABASEPASSWORD)またはダイ(はmysql_error());
@ mysql_select_db($ databasenameは)またはダイ(はmysql_error());

ファイルの束以上/ /このループ
{(; $ R <14 $ R + + $ R = 2)
$ C、($ C = $ rの

AM 1:10にサマン 2010年6月3日

私は、私たちはアップロードコントロールをファイルにデフォルト値を設定することができますserver.forの例にcsvファイルをアップロードするつもりですどのよ​​うにクライアントのハードドライブへのアクセスに制限しています場合

コールタン午前9時55時2010年6月5日

素晴らしいスクリプトが、私は繰り返し発生する問題を抱えています。
私はスクリプトを実行した後、それは"このcsvファイルの1レコードの合計が見つかりました。"と言う。
私は私のテーブルに戻って見て、それは空白を示しています。
私は列の右の数があったことを確認するためにチェックしていました。
助けてください!

おかげで、
コー​​ルタン

14:55時GIO 2010年6月5日

あなたが最初の行を挿入しないようにする場合は、単に例えば、カウンターで遊ぶ:

$行= 1;(カウンタの値が1の場合)
$クエリ="";
$ linearray =配列();

foreachの($行として分割($ lineseparator、$ csvcontent)){

$行+ +;(最初の行を割り当てます#2(ヘッダ)

($行は> = 3){(#3"以上または3に等しいもの"で開始)場合

21:41で初心者 2010年6月14日

私は、このスクリプトは、別のドメインの下に良い実行していた。 その後、私はそれを移動したときに、cronジョブは、csvファイルをダウンロードし、それを格納し、それを削除しますが、MySQLにアップロードdoesntの。 私はimport.phpファイルを見て、それを実行しようとすると、ファイルは、正しいパスを持っていることを確認見つけることができないというエラーが表示されます。 ヘルプ。

ポルックス AM 10:28 2010年6月24日

csvファイルのヘッダーにこれを行う場合、最初の行/列をスキップするには:
... ..
するif($行> 1){

するif($ addauto)
$ databasetable値(",'$ linemysql ');";に$クエリ="を挿入

$ databasetable値('$ linemysql ');";に$クエリ="を挿入

$クエリ.= $クエリ。 は"\ n";
@するmysql_query($クエリ);
}

1:21でダーウィン 2010年7月23日

うーん.. 私はこのようなエラーが"ファイルが書き込み可能でない得た、パーミッションをチェックしてください。 このcsvファイルの2つのレコードの合計が見つかりました。"何が悪かったのか、任意のアイデアは?

1:23でダーウィン 2010年7月23日

うーん.. 私はこのようなエラーが"ファイルが書き込み可能でない得た、パーミッションをチェックしてください。 このcsvファイルの2つのレコードの合計が見つかりました。"何が悪かったのか、任意のアイデアは?

ハーン 2010年8月7日5:11時

こんにちは、
このエラーを取得する。 この問題を解決する方法?

エラー:
ファイルが書き込み可能でない場合、パーミッションをチェックしてください。 このcsvファイルに13レコードの合計を発見した。

感謝
ハーン

ビニタ午前6時49分時2010年8月17日

私はこのコードを使用... ... ...その私のサイトでそれを実装するには余りにも簡単に... ..
どうもありがとう..

私はphpのためにいくつかのより多くのコードが欲しい... ...
PDFにページを変換するには...

18:35時Radikale 2010年8月18日

ニース作業!

私はちょうど質問があるのです。

それは、スクリプト内の爆発特攻隊に複数の文字を使用することは可能ですか?
私はallsoと分離があることが必要です。 と;

いくつかの体がどんな考えを持っている場合ありがとうございました!

ロイ 12:00 PMで2010年8月20日

こんにちは、

私は、mysqlへのCSVデータフィードをインポートするには、このスクリプトを使用してください。
私が持っている唯一の問題は、引用符が""また、私のテーブルに挿入されるということです
区切り文字:、(komma)
エンクロージャ:"(aanhalingsteken)
新しい行:\ r \ nを

ロイ 12:02で2010年8月20日

ここにコードところでは、です。

$ databasehost ="localhost"という。
$ DatabaseName =に"データベース";
$ databasetable ="テーブル";
databaseusername ="admin"に$。
$ DATABASEPASSWORD ="管理者";
$ fieldseparator ="、";
$ lineseparator ="します\ n";
$でcsvfile ="http://linktosite/";
$ addauto = 0;
= 0を保存する$;
$ outputfileに="output.sql"; / /保存がオンの場合は(1)
$ファイルの= fopen($でcsvfile、"RB");
$ csvcontent = stream_get_contents($ファイル);

fcloseを($ファイル);

$ CON = @ mysql_connect($ databasehost、$ databaseusername、$ DATABASEPASSWORD)またはダイ(はmysql_error());
@ mysql_select_db($ databasenameは)またはダイ(はmysql_error());

$行= 0;
$クエリ="";
$ linearray =配列();
foreachの($行として分割($ lineseparator、$ csvcontent)){

$行+ +;

$行=トリム($行、は"\ t");

$行= str_replace("\ rを","",$ライン);

/************************************
この行は、特殊文字をエスケープします。 エントリがすでにCSVファイル内でエスケープされている場合、それを削除する
************************************/
$行= str_replace ("'"," \'"、$行);
/*************************************/

$ linearrayは=爆発する($ fieldseparator、$行);

$ linemysql =崩壊する("','",$ linearray);

するif($ addauto)
$ databasetable値(",'$ linemysql ');";に$クエリ="を挿入

$ databasetable値('$ linemysql ');";に$クエリ="を挿入

$クエリ.= $クエリ。 は"\ n";

@するmysql_query($クエリ);
}

@ mysql_close($ CON);

{($保存)した場合

するif(!is_writable($ outputfileに)){
echo"ファイルが書き込み可能でない、権限を確認し、\ nを";
}

他に{
$ file2の=のfopen($ outputfileに、"W");

するif(!$ file2を){
エコー"出力ファイルへの書き込みエラー\ nを";
}
他に{
fwriteの($ file2を、$クエリ);
fcloseを($ file2を);
}
}

}

エコーは、"このcsvファイルで$行のレコードの合計が見つかりました。 DBに追加する\ n";

マット 23:18で2010年9月8日

これは非常にうまく機能します。 ありがとう!

午前1時17時オラム 2010年9月10日

私は下記の-通告に直面しています

注意:未定義のオフセット:C 1:20行目の\ WAMP \ WWW \新しいフォルダ(2)\ exl8.php

注意:未定義のオフセット:C 2:20行目の\ WAMP \ WWW \新しいフォルダ(2)\ exl8.php

注意:未定義のオフセット:C 2:20行目の\ WAMP \ WWW \新しいフォルダ(2)\ exl8.php

オンライン薬局午前9時22時2010年9月11日

8pills.comは、あなたの1つのストップのヘルスケアソリューションです。 8pills.comは、クラスジェネリックとブランド薬のベストを提供しています。

AM 10:05 zeshan 2010年9月16日

非推奨:関数split()がEで廃止さ:63行目の\ WAMP \ WWW \ floodpk2 \ ADMIN \ simplecsvimport.php
ファイルが書き込み可能でない場合、パーミッションをチェックしてください。 このcsvファイルで1498のレコードの合計が見つかりました。

plzは緊急に私を助ける

bhanu 22:44で2010年9月19日

@ zeshan

代わりに、分割の爆発を使う

14:54時susylu 2010年9月21日

kaundoルDOY descarga私aparecen muchosジッパードスロスarchivosロスubico EN UNAソラcarpeta?¿

オンライン教育 10:26で2010年9月29日

私は、この問題をSQLにショッピングカートのcsvファイルのために最善だと思う。

午前8時41時rashmi 2010年10月10日

<?PHP
$ newbal = '0';
"conn.phpを"含んでいる;
(どうかの判断($ _POST ['submit'を]))であれば
{
$ファイル名= $ _POST ['ファイル名'];
$は、=のfopen("$ファイル名"、"R")を扱う。
一方、(($データ= fgetcsv($ハンドル、1000、","))!== FALSE)
{

$ sql5 =するmysql_query(アイテムから"SELECT *の項目は='$ DATA [0 ]'");
$ NUM = mysql_num_rows($ sql5);
(NUM == 0 $)なら
{
$輸入="項目へのINSERT(アイテム、gweight、dweight)の値('$ DATA [0 ]','$データ[1 ]','$データ[2 ]')";
するmysql_query($インポート)またはダイ(はmysql_error());
}
他に{

エコー"$データ[0]終了";
}
}
fcloseを($ハンドル);
プリント"インポート完了";

}


{
?>

インポートするファイルの名前を入力します。


SetIconは("画像/ iconCalendar.gif");
$ myCalendar ->するsetdate(日付('D')、日付('M')、日付('Y'));
$ myCalendar -> setPath ("./");
$ myCalendar -> setYearInterval(2010、2020);
$ myCalendar -> dateAllow('2008 - 05 - 13'、'2020 - 12 - 31');
$ myCalendar -> setDateFormat('Y / M / D');

$ myCalendar -> writeScript();
?>

それは、私はlocalhost上でcsvファイルをアップロードするが、事前に、私を助けserver.pleaseに感謝を実行すると、ファイル欠落しているエラーを示す場合でも問題なく動作

17:26時Seelamラヴィクマール 2010年10月19日

HI友人、

私はあなたからの緊急の助けが必要...そう親切にここに私を助けコードです...

HTMLファイルを用意。 しかし、私はphpのソリューション...親切に私のために助けを必要とする... ... ..

SMSを送る

受信側携帯電話番号:
91

電話帳

Excelファイルをアップロードします。

<!-​​->
<入力タイプ="ファイル"名前="ファイル"クラス="file_input_hidden"OnChangeが=の"javascript:document.getElementBy

送信者ID:

ヨガ
GRAFS
MOBITEL

VAR frmvalidator =新しいValidator('freesms2');
frmvalidator.addValidation("frno"、"REQ"、"携帯電話番号を入力してください");
frmvalidator.addValidation("frno"、"NUM"、"携帯電話番号のフィールドに数値が含まれている必要があります");
frmvalidator.addValidation("frno"、"minlength = 10000"、"携帯電話番号が10000の数字でなければなりません");
frmvalidator.addValidation("message3"、"REQ"、"SMSのテキストを入力してください");

敬具、
ラヴィクマール

18:21時neady 2010年10月25日

まったく同じ問題を持って、誰を喜ば助けることができる?

ロイ
こんにちは、
私は、mysqlへのCSVデータフィードをインポートするには、このスクリプトを使用してください。
私が持っている唯一の問題は、引用符が""また、私のテーブルに挿入されるということです
区切り文字:、(komma)
エンクロージャ:"(aanhalingsteken)
新しい行:\ r \ nを

21:48 Mike 2010年11月18日

@独占チュートリアル
時間をそれをしない持つ方法はありますか? それは100,000のレコードを持つ素晴らしい作品が、私は百万以上のような何か大きなもののために行くときに、空白の画面と広告のないレコードに行くし、約20秒間実行されます。? おかげ。

16:57で管理者 2010年11月29日

@マイク
あなたが追加してみてください。
関数set_time_limit(0);
初めに右? (右のPHPの開始タグの後)

エヴァンイスラム教 17:23で2010年11月30日

これは素晴らしいです...実装するのは非常に容易。 今すぐに。XLSのファイルを一緒にアップロードするために、このまたは類似のスクリプトを使う方法をお奨め。csvファイルには、

17:29に2010年12月1日に一杯のウィスキー

偉大な小さなプログラム。

セルなどのデータを置換する方法はありますか。 csvファイル内の'街'と$ _SESSIONまたは$ _POSTの値のような前のページからの値に変更します?

AM 1:20 クレイグ 2010年12月8日

私のCSVのインポートファイルには、(それがデータを書き換えていないので、私はExcelにインポートする必要がある場合は、主に問題を避けるために)すべてのフィールドを囲む二重引用符を持っていますので、私はそれがデータを囲む引用符を含むレコードを挿入されたこの問題を抱えていた。 私はこの行を追加することで、すべて二重引用符を除去。

$行= str_replace("\ "","",$ライン);

この行の後に:

$行= str_replace("\ rを","",$ライン);

そして新しい行は、何も二重引用符に置き換えられます。 それは代わりに\ r(二重引用符の代わりにキャリッジリターン)の"\を削除して除き、その前の行と同じです。

@ neady

アンドリューフィッシュ 16:26で2010年12月9日

私はPHP Adminを使用して、正しくインポートを知っているcsvファイルを使用してこのスクリプトを実行すると、スクリプトが実行される、メッセージを持つ行の正しい数は"。このcsvファイルに193レコードの合計が見つかりました"という報告が、データのどれもに表示されないテーブル。 データがテーブルに置かれている場合、私が見ることができるように、私はcsvファイルに変更を加えているとそうではありません。 任意のアイデア?
AJ

アンドリューフィッシュ 15:28で2010年12月10日

さて、問題を発見した。 私は、テーブル名をmispeltていた。 私はSQLが失敗した場合にエラーを返す次のコードを追加したときにだけ問題を見つけました。 問題があったしている場合、現在のスクリプトは通知しません。
ので、ラインを変更する
@するmysql_query($クエリ);

- :以下のすべての

$結果=するmysql_query($クエリ);

/ /結果を確認してください
/ / MySQLに送られたクエリ、およびエラーを示しています。 デバッグに便利。
するif(!$結果){
$メッセージ='無効なクエリを:'。 はmysql_error()。 は"\ n";
$メッセージ.='クエリ全体:'。 クエリ$;
死ぬ($メッセージ)

誰かの役に立てばと願っています。 それは私がしました。
AJ

@アンドリューフィッシュ

午前8時52時pruthvi 2010年12月23日

コー​​ドは、csvファイルを見つけるcouldntの声明を返しています...
ワットは問題かもしれない...。

午前9時30分pruthvi 2010年12月23日

最新の開発コードは、CSVファイルの行のないを検出するが、そのテーブルに表示することができない

9:31でpruthvi 2010年12月23日

私と同じ問題@アンドリューフィッシュ

9時48時pruthvi 2010年12月23日午前

あなたは@するmysql_query($クエリ)を置換するようにコードを説明することができる; uは与えたが、それはエラー$メッセージが表示されている文で未定義である@アンドリューフィッシュ

14:12でスマン 2010年12月23日

これは、すべてのPHPの開発者に本当に便利なコードをすりおろす。

14:16でスマン 2010年12月23日

@ pruthvi

こんにちは、

怒鳴る、特定のコードを使用してください... ...

14:18でスマン 2010年12月23日

スマン
@ pruthvi
こんにちは、
怒鳴る、特定のコードを使用してください... ...

16:09時pruthvi 2010年12月24日

屋は、コードは動作しますが、NWは、私のデータが引用符で囲んで取得しています@スマン

アルファ 18:32で2010年12月26日

mysqlのスクリプトにエクセルを共有していただきありがとうございます、これは私にとって非常に便利です。

21:37でウォーレン 2010年12月28日

私はプログラマーではない。 私はあなたのスクリプトを参照してください、それは私は必要なものに近いかもしれない、または多分私は必要なものの基礎を形成することが、私はわからない。

私は毎回(differretウェブサイト上のたびに)何度も繰り返しが、異なるサブディレクトリから私のハードドライブから、csvファイルのリストについては、毎回、と別のMySQLのDBへの同一のアップロード機能を実行する必要があります。 ほとんどの場合、DBはその内の任意のデータを持っていないだろうが、スクリプトがまだ既存のデータに影響を与えることなく、データを持っていたデシベルを扱うことができれば、それは)(が、必須ではない)が理想的です。

私はそれが(それは、サイトのURLとDBのユーザー名とパスワード、などのために私に質問してください)​​サーバ上のdbにログインする必要があります。

私は私がブラウズして選択私のハードドライブ上のディレクトリ名を、またはそれを入力できるものが必要です。

それは次のように、次々と、そのディレクトリ内の各csvファイルを処理します。

各ファイルに私はそれが最初のファイル名を(拡張子)を取り、テーブルのカテゴリ内のDBにアップロードする必要があります。 そのテーブルは、その名前に割り当てられた番号のキーが含まれています。

私は、テーブルの言葉に、そのファイルの唯一の単語のコラムを(データの第1コラム)をアップロードし、最初のファイルからカテゴリ名と一致するnubmerを追加するスクリプトが必要です。

これは、CSVファイルは、しばしば私は無視してアップロードしていないしたいすべての4つのうち3つのヘッダテキストの行と空白行を、含まれていることに留意すべきである。 私も、それは無視するようにそれらをしたいファイルのTE eendで空白行を、同様に無視したり、CSVファイルに存在しない可能性がある他の列がしばしばあります。 場合によっては、csvファイルには任意のヘッダーまたは他の列を持っていない可能性があります。

それは、ディレクトリ内のファイルがなくなるまで、その後次のファイル、。

それから私は"。プロセスが完了する"それが私を紹介したいと思います、とすべてのエラーは私に言うために場合。

あなたたちのうちのどれかがこれを手伝ってくれる?

22:10でウォーレン 2010年12月28日

@ウォーレン

また、単に好奇心からそれはまた(これはちょうどその中の単語のリストを持っている)、同じようにtxtファイルを処理することができる?

(私はこの時に新しい午前、私はそれが適切であれば、誰かが、私のために、この小さなプロジェクトを取ることができればそう、多分私達は私がに変更を加えるには彼らの時間のために少量を支払うことについて話し合うことが、多くのことを尋ねることがわかっている私のニーズを満たす?私に知らせてください。)

私の電子メールは以下のとおりです。 wr.spence @ hotmail.com

10:30 PMでウォーレン 2010年12月28日

ちょうど私のリクエストに若干の補正、私が述べたMqSQLデータベース内の2つのテーブルが実際に呼び出されます。

keywords_categories

キーワード

午前1時31時ウォーレン 2010年12月29日

@ウォーレン

/********************************/
このファイルには、彼が必要なものに、このプログラムとなるようにソースサイトと他の情報には、コメントに基づいて、2010年12月28日以降にウォーレン(プログラマではなく)によって行われた多くの試行の変更が含まれています。 これは非常に不完全です。 ヘルプには、最も高く評価し、非常に必要とされる。

行は、ウェブサイトのURLのデータベース名とパスワードの入力ボックスなどを作成するために追加
/********************************/

サーバーのアップロードユーティリティへようこそ

テーブルのkeywords_categoriesに、カウンターとして前に一意の番号で、各ファイル名以下の拡張子をアップロードし、その後、番号1を割り当てます:このプログラムはによってあなたのウェブサイト上に新しいMySQLデータベース内の2つの空のテーブルを移入するためにPCから実行されますそのファイルからデータの最初のコラムの前に空白の列で、テーブルにカテゴリ名にassigend数はであるそれに属するキーワードが一致するように、そのディレクトリから処理後続の各ファイルに1ずつ数字が増えますその後、テーブルのキーワードにアップロード。

これは、指定されたディレクトリ内のすべてのcsvファイルに対して行われます。

それはあなたのcsvファイルの最初の5行を無視します。

ウェブサイトのURL:
データベース名:
データベースユーザ名:
データベースパスワード:
アップロードするファイルを含むディレクトリのパス:

/********************************/
質問
どのように私は以下の要求と一致するようにプログラムに入力ボックスのデータの上に入手できますか?
/********************************/

<?PHP
/********************************/
ラインは、大きなファイルのタイムアウトを防ぐために追加。
/********************************/

関数set_time_limit(0);

/********************************/
処理されるファイルのファイル名を取得し、テーブルのkeywords_categoriesへのカテゴリ名としてアップロードするためにそれらを使用してファイル名の拡張子を削除します。
/********************************/

/********************************/
ファイル名のextentionsを削除します。
WWW perlmonks ORG /?はnode_id = 151232からコピー
/********************************/

サブparse_out_extension {
死ぬ("\ nを構文解析することはありませんファイル名。")であれば(@ _!);

私の($ファイル)= @ _;
私の@部分;

マップ{プッシュ(@ピース、$ _)}分割(/ \ /、$ファイル);

私の$エンド=ポップ(@ピース);
$ファイル=〜sの/ \ $終了/ /。。

$ファイルであればリターン($ファイル);

/********************************/
で/ *オリジナルコードhttp://legend.ws/blog/tips-tricks/csv-php-mysql-import/
/ *適切な値を反映するために、下記のエントリを編集します。
/********************************/
$ databasehost ="localhost"という。
$ databasenameは="テスト";
$ databasetable ="サンプル";
$のdatabaseusername ="テスト";
$ DATABASEPASSWORD ="";
$ fieldseparator ="、";
$ lineseparator ="します\ n";
$でcsvfile ="filename.csv";
/********************************/
/ *あなたは、これらのレコードの先頭にamptyのフィールドを追加しますか?
ファイルごとの各ファイル内のデータの最初の列なキーワードの場合にはウォーレン/ *注意、キーワードの喧騒フロそれはに割り当てられた番号をキャプチャするように変更する必要があるこの新しい空白coumの場所ファイル名以下の拡張子で構成され、この新しい空白の最初の列でそれを配置されるカテゴリ名。
もしAUTO_INCREMENT整数である最初のフィールドを持つテーブルがある場合、/ *これは便利です。 ウォーレン注意。 これは、テーブルkeywords_categoriesにupoadedされているファイル名未満exteniosnの場合に必要となるものです。
/ *とcsvファイルは、レコードの前にそのような空のフィールドとして持っていません。
/ * yesのセット1となしの場合は0。 注意:あなたがわからない場合は1に設定しないでください。
この余分なフィールドがテーブルに存在しない場合は/ *これは、間違ったフィールド内のデータをダンプすることができます。 ウォーレン(注)は、おそらく私私の場合このファイルは必要ありませんが、私の一部でのみ推測があれば必要性を確認する必要があります。
/********************************/
$ addauto = 1;
/********************************/
/ *このファイルでのmysqlのクエリを保存しますか? はい$を設定した場合は1に保存する。
/ファイルの*パーミッションは777に設定する必要があります。 どちらかのftpを通じたサンプルのファイルをアップロードし、
/ *アクセス権を変更する、またはプロンプトで実行します。タッチoutput.sql&&chmodの777 output.sql
/********************************/
= 0を保存する$;
$ outputfileに="output.sql";
/********************************/

するif(!file_exists($でcsvfile)){
echo"ファイルが見つかりません。 あなたが正しいパスを指定したことを確認してください\ n"を指定します。;
出口;
}

$ファイルの= fopen($でcsvfile、"R");

するif(!$ファイル){
エコー"を開くときにエラーが発生しましたデータのファイル\ nを";
出口;
}

$サイズ=ファイルサイズ($でcsvfile);

するif(!$サイズ){
echo"ファイルは空です\ n";
出口;
}

$ csvcontent =のfread($ファイル、$サイズ);

fcloseを($ファイル);

$ CON = @ mysql_connect($ databasehost、$ databaseusername、$ DATABASEPASSWORD)またはダイ(はmysql_error());
@ mysql_select_db($ databasenameは)またはダイ(はmysql_error());

/********************************/
ヘッダ内のテキストや空白行をadveristingの最初の4行を挿入しないように。 ゼロのコードに等しい行はコードの下に置き換えられました。
/********************************/

$行= 1;(カウンタの値が1の場合)
$クエリ="";
$ linearray =配列();

foreachの($行として分割($ lineseparator、$ csvcontent)){

$行+ +;(最初の行を割り当てます#2(ヘッダ)

場合($行> = 5){(#5で起動し、"より高いまたは5に等しいもの?)

$クエリ="";
$ linearray =配列();

foreachの($行として分割($ lineseparator、$ csvcontent)){

$行+ +;

$行=トリム($行、は"\ t");

$行= str_replace("\ rを","",$ライン);

/************************************
この行は、特殊文字をエスケープします。 エントリがすでにCSVファイル内でエスケープされている場合、それを削除する
************************************/
$行= str_replace ("'"," \'"、$行);
/*************************************/

$ linearrayは=爆発する($ fieldseparator、$行);

$ linemysql =崩壊する("','",$ linearray);

するif($ addauto)
$ databasetable値(",'$ linemysql ');";に$クエリ="を挿入

$ databasetable値('$ linemysql ');";に$クエリ="を挿入

$クエリ.= $クエリ。 は"\ n";

/************************************
以下のコードのこのビットは、エラーメッセージを表示するために追加されました。
************************************/

$結果=するmysql_query($クエリ);

/ /結果を確認してください
/ / MySQLに送られたクエリ、およびエラーを示しています。 デバッグに便利。
するif(!$結果){
$メッセージ='無効なクエリを:'。 はmysql_error()。 は"\ n";
$メッセージ.='クエリ全体:'。 クエリ$;
死ぬ($メッセージ)
}

@ mysql_close($ CON);

{($保存)した場合

するif(!is_writable($ outputfileに)){
echo"ファイルが書き込み可能でない、権限を確認し、\ nを";
}

他に{
$ file2の=のfopen($ outputfileに、"W");

するif(!$ file2を){
エコー"出力ファイルへの書き込みエラー\ nを";
}
他に{
fwriteの($ file2を、$クエリ);
fcloseを($ file2を);
}
}

}

echo"このcsvファイルで$行のレコードの合計が見つかりました\ nを";

?>

18:57でウォーレン 2010年12月30日

こんにちはみんなは、ちょうどあなたがすべての私は誰かが私に私が必要とする実際のプログラムを書くことが判明していることを知ってもらいたい。

9:46に2011年1月11日Khaled

、私はスクリプトを試してみましたがoutput.sqlは奇妙なものを足すれ
!?Q K5 Q Q K5 Q Q K5 Q ... | ??????? ????????test_excel値("PKに挿入。

これらの事のように
どうすればこの問題を解決することができます。 エクセルのシートのための特別なフォーマット?

10:35に2011年1月11日Khaled

@は、ハレド
どのように私はoutput.sqlにUTF8 Excelにエクスポートできます
感謝

午前11時16時11 joofoo 2011年1月

@ロイ
私は大きなファイルを(私は100メガバイト、CSVファイルでそれを使用しようとしたとき、それはphpのメモリ制限を越えました)処理するとき、それははるかに少ないメモリを消費するように、スクリプトを修正。 変更点は以下のとおりです。


$chunksize = 1*(1024*1024);
$file = fopen($csvfile,"rb");
if(!$file) {
echo "Error opening data file.\n";
exit;
}

$サイズ=ファイルサイズ($でcsvfile);

するif(!$サイズ){
echo"ファイルは空です\ n";
出口;
}

$ CON = @ mysql_connect($ databasehost、$ databaseusername、$ DATABASEPASSWORD)またはダイ(はmysql_error());
@ mysql_select_db($ databasenameは)またはダイ(はmysql_error());

$行= 0;
$クエリ="";
一方、(!FEOF($ファイル)){
$ csvline =またはfgets($ファイル、$チャンクサイズ);

$行+ +;
継続($行<2)場合はtrue。

$行=トリム($ csvline、は"\ t");

$行= str_replace("\ rを","",$ライン);

/************************************************* ******
この行は、特殊文字をエスケープします。 エントリがすでにCSVファイル内でエスケープされている場合、それを削除する
************************************************** ******/
$行= str_replace ("'"," \'"、$行);
/************************************************* ******/

$ linearrayは=爆発する($ fieldseparator、$行);

$ linemysql =崩壊する("','",$ linearray);

$ databasetable値('$ linemysql ');";に$クエリ="を挿入

するif($保存)$クエリ.= $クエリ。 は"\ n";

@するmysql_query($クエリ);
エコー$行に"\ n";
}
fcloseを($ファイル);

$行-= 3;

@ mysql_close($ CON);

、ありがとう

17:54第15回ronbowalker 2011年1月

@ joofoo
私はあなたのコードをロードしているが、私はMySQLのデータベースには更新情報を得ることが...

CSVには以下が含まれます。
ヘッダ - >ユーザー名、パスワード、メッセージ、メール、画像、日付
ROW2 - >ビル、男、、、、
Row3 - >ジェーン、ギャル、、、、
ROW4 - >デビッド、子供、、、、

とここではコードです...。
<?PHP

/ /セットアップ"リモート"フォルダ内のiphonelogin.phpファイルから...
/ * * / DBに接続
/ / $リンク= mysql_connect('ronbo.db.6405862.hostedresource.com'、'ronbo'、'Pepper0689")または死ぬ("DBに接続できません');
/ / mysql_select_db("ronbo'、$リンク)または死ぬ("はDBを選択できない"を);

/ / http://www.ihappyapps.com/DataFolder/loader.php
/********************************/
で/ *コードhttp://legend.ws/blog/tips-tricks/csv-php-mysql-import/
/ *適切な値を反映するために、下記のエントリを編集します。
/********************************/
$ databasehost ="dbhostの";
$ databasenameは="名前";
$ databasetable ="テーブル";
$ databaseusername ="ユーザ名";
$ DATABASEPASSWORD ="パスワード";
$ fieldseparator ="、";
$ lineseparator ="します\ n";
$でcsvfile ="spreadsheet.csv";
/********************************/
$ addauto = 1;
/********************************/
= 0を保存する$;
$ outputfileに="output.sql";
/********************************/

するif(!file_exists($でcsvfile)){
エコー"サーバーが要求を持っていますが、データベースにロードするCSVファイルが存在しない... ..します\ n";
出口;
}

$チャンク= 1 *(1024 * 1024);
$ファイルの= fopen($でcsvfile、"RB");
するif(!$ファイル){
エコー"を開くときにエラーが発生しましたデータのファイル\ nを";
出口;
}

$サイズ=ファイルサイズ($でcsvfile);

するif(!$サイズ){
echo"ファイルは空です\ n";
出口;
}

$ CON = @ mysql_connect($ databasehost、$ databaseusername、$ DATABASEPASSWORD)またはダイ(はmysql_error());
@ mysql_select_db($ databasenameは)またはダイ(はmysql_error());

$行= 0;
$クエリ="";
一方、(!FEOF($ファイル)){
$ csvline =またはfgets($ファイル、$チャンクサイズ);

$行+ +;
継続($行<2)場合はtrue。

$行=トリム($ csvline、は"\ t");

$行= str_replace("\ rを","",$ライン);

/************************************************* ******
この行は、特殊文字をエスケープします。 エントリがすでにCSVファイル内でエスケープされている場合、それを削除する
************************************************** ******/
$行= str_replace ("'"," \'"、$行);
/************************************************* ******/

$ linearrayは=爆発する($ fieldseparator、$行);

$ linemysql =崩壊する("','",$ linearray);

$ databasetable値('$ linemysql ');";に$クエリ="を挿入

するif($保存)$クエリ.= $クエリ。 は"\ n";

@するmysql_query($クエリ);
エコー$行に"\ n";
}
fcloseを($ファイル);

$行-= 3;

@ mysql_close($ CON);

<>

私は本当にこれを動作させるためにいくつかの助けを使用できる...
ロン

14:56時qwewe 2011年1月23日

@マークCloyd
"アドレス= VALUES(アドレス)
構文エラー、予期しない'=':私は解析エラーとしてここでエラーが出る

14:56でさびた 2011年2月3日

このスクリプトは、それらのコンマを持つフィールドが新しいエントリとして読みされないように二重引用符で囲まれているフィールドでも動作するようにする方法の任意のアイデア?

私は、金額と、ユーザーはカンマを使用している可能性がコメント欄のようなカンマを含むデータを持っている。 私は、フィールド全体がインポートが必要と、このスクリプトは、新しいフィールドとして扱います。

19:01時ホルヘディアス 2011年3月14日

おかげで、非常に優れたCSVインポータ。
"フィールド1"、"フィールド2"、"field3の"、等、私havaこのようなCSVファイル::しかし、私は一つの小さな問題を発見、それは唯一の構造を持つCSVファイルと連動フィールド1、フィールド2、filed3、など

私は変更することができる唯一の​​事は$ fieldseparatorですが、どのように私は(フィールド区切り文字)"ファイルが使用されていないことをスクリプトを"知る"ことができますか?
私のideiaは($ fieldseparatorとコンボボックスだった、または ;) $ fielddelimiterとし、別の("または何も)

事前に感謝。

justkid 10:25で2011年4月7日

私は本当にこのコードで混乱している!
しかし、私は試してみる習慣!
ところで、どのようにコードまたはフィールドのHTMLは、このコードを呼び出すために

午前7時39時umair 2011年5月2日

こんにちは...
私は問題に直面しています、私はこれを使用する場合、そのというエラーを表示
"非推奨:関数split()はCで廃止さ:64行目の\ WAMP \ WWW \ TEST1 \ simplecsvimport.php
ファイルが書き込み可能でない場合、パーミッションをチェックしてください。 このcsvファイルに41レコードの合計を発見した。 "

plsの返信、何が悪い!
事前のおかげで!

午前7時52時11 Joln月、2011

素晴らしいスクリプト! TNXたくさん

[...]のlegend.ws、彼らは簡単に変更および[...]に統合することができます利用可能なコードのスニペットを作りました

15:16第15回マットフレミング 6月、2011

こんにちは、このスクリプトは素晴らしいです。 私はしかし一つ問題があります。 スクリプトは私のデータベースに入っていると、"マークを削除する方法はありますか。 彼らは、各セルの入力を取り囲んでいる。

午前10:14 Jhon 2011年7月3日

Rearlly PHPと協力
Pagluジャストチルアウト

19:05でブラム 2011年8月21日

便利なスクリプト。 それはあなただけでなく、テーブルの作成を(大CSVの多くのcolumsを持つ)必要があるかもしれません。 したがって、CSVファイルの最初の行のヘッダーを使用してテーブルを作成することができますslidly修正版。

13:58でJ -香港 2011年8月31日

どうもありがとうございました。 韓国から。

10:11でアミット 2011年9月5日

私は私のcsvファイルをデータベースで確認を取得したい。

データベース内のような行があります。
23インドのテスト

私のcsvファイルのようです、
ABC 21インド
内のdef 32
23インドのテスト
DEF 21インド

私はcsvファイルをアップロードすると、それは名前"テスト"がデータベースに既に存在し、その行を残し、残りの3行をアップロードする必要があることを確認する必要があります。

それは可能です。

助けてください。

おかげ。

午前10:23 ソニアJayaprakash 9月15、2011

このコードを提供するために多くのU SOOをありがとう... Uをありがとう...。

ニック 20:22で2011年9月15日

本当にありがとう、これは非常に非常に便利です!

アルジュンP Yadavが午前八時19分で2011年9月17日

非推奨:関数split()はC言語で推奨されていない:\ WAMP \ WWW \ simplecsvimport.php 66行目で

それを解決するのに役立ってください。

Dereva plantarea trandafirilor Jenela午前8時12分時2011年10月13日

これはちょうど私が探していた情報です! 私はMySQLにCSVデータをインポートするには、このスクリプトを使用します。

午前6時27時Manmohit Vermaさん 10月15、2011

PHPを使用してmysqにcsvファイルをインポートするコード: -
まずcsvファイルとしてExcelとExcelシートに保存するすべてのアセスのシートを作る

18:07第15回フェルナンドムリータ 10月、2011

ありがとう!

それは魔法のように動作します!

それに本当のアクセスを与えることなくテーブルを移入するためにユーザーをallawに非常に便利。

おかげで再び :)

12:12時ラジャ 2011年11月2日

ファイルが書き込み可能でない場合、パーミッションをチェックしてください。 このcsvファイルの1レコードの合計が見つかりました。
この問題を解決するために助けてください。 私はそのoutput.sqlファイルを作成していない

NetWeaverは7.3 AM 6:04時2011年11月3日

私は間違いなくこれを使用します。 私は部外者が私に対してそれを使用しないように保護したり、実装する方法について疑問に思って。 私はこのスクリプトまたは私はコマンドラインから実行できるperlスクリプトを使用して議論しています。 おかげ。

11:15時アンクルサフ 2011年11月16日

こんにちは、

私はこのスクリプトを使用して、私のため正常に動作します。 しかし、それだけを挿入mysqlのテーブルにある237レコードの合計437のレコードが存在するcsvファイルにしながら。

午前3時57分でミゲル 2011年11月24日

PHP上でこんにちはイム初心者。 と助けが必要です。 私は単一のCSVファイルをロードし、2 MySQLのテーブルを供給する必要があります。 しかし、csvファイルのデータは、mysqlのテーブルと同じ構造がいけない。 また、日付のフォーマットとデータ内のカンマに問題がある。

mysqlのtable1の
ID、名前、電子メール、ステータス
mysqlのテーブル2
ID、book_name、date_book_out、date_book_in

csvファイル
10052、"MikeParker"、"mike@email.net"、"アクティブ"
10052、"シーズンが終了する前に、rt526"、2011年1月10日、2011年1月25日

感謝

16:35時アンクルサフ 2011年12月7日

こんにちはみんな、

このスクリプトで助けてください。 それだけ挿入データベースには240レコードを。

17:05時ロルフ 2011年12月8日

それは、このような良いスクリプトではありません...いくつかのthousends以上のレコードに対処する方法?
あなたが1インポートで多分1000行を格納することにより、はるかに良いのインポートを行うことができるときに、クエリのthousendsを実行するためにデータベースにいいことではない..

自然suppliments午前8時19分で2011年12月29日

私は徹底的にあなたのポストを読んで、心吹い情報を持っている...。 自分が何かの前進を改善しようとしている場合私にメールを送ってください..
おかげで..

自然suppliments

maquinasドコーザー午前6時28分時2011年12月30日

私はあなたの情報とあなたのウェブサイトを共有していただき感謝したいだけ、これは簡単ですが、私が今まで見た中で良い資料には、私はそれが好き、と私は今日何かを学んだ! ありがとう!

maquinasドbordar

午前8時18分でステファン 2011年12月30日

ハイ
スクリプトは、偉大な作業、細かいですが、私はアドバイスを必要とする
私のテーブルは3 colomnsを持っています。
ID、コードと名前
私は出回っいくつかのデータが挿入されている、と私はmesingいるだけの情報を挿入したい。
私はタラでのみチェックする必要があります。 コー​​ドが存在するのであれば、sciptのsholdは挿入されません。

アドバイスを事前に感謝。

よろしく、
ステファン

アレン 18:04で2012年1月1日

あなたの情報をありがとう

コメントを残す

あなたのコメント