PHPスクリプトは、MySQLにCSVデータをインポートする
これは、あなたのデータベースにCSVデータをインポートできるようにする簡単なスクリプトです。 あなたは、単に適切なフィールドを編集することができますので、csvファイルと一緒にアップロードして、Webサイトからそれを呼び出して、それが残りの部分を行いますこれは便利だ。
それは昏睡状態であるかどうか、このcsvファイルの区切り文字を指定することができます、タブなどがこれまた、行区切り文字を選択することができ、あなたはファイル(データをSQLダンプとも呼ばれる)に出力を保存することができます。
また、通常、主キーの自動インクリメントの整数であり、各行の先頭に空のフィールドを含めることができます。
あなたはphpmyadminの持っていない主場合、またはには、ログインの手間を必要としない、数回のクリックのソリューションを望んでいるこのスクリプトは有用であるか、単にコマンドプロンプトで男です。
ちょうどテーブルが既にデータをダンプする前に作成されていることを確認します。
あなたがバグレポートを得た場合、親切にご意見を投稿してください。
私は本当にこのコードで混乱しています!
しかし、私は試していただきたい!
ところで、コードまたはフィールドのHTMLは、このコードを呼び出す方法
おかげで、非常に良いcsvファイルのインポーターです。
しかし、私は一つの小さな問題を発見、それだけで構造とcsvファイルで動作します:"フィールド1"は、"フィールド2"は、"フィールド3"などが、私はこのようなCSVファイルをhava:フィールド1;フィールド2; filed3;等
私は変更することができる唯一のことはja項目$であるどのようにファイルが(フィールド区切り)"を使用していないことをスクリプトを'伝える'ことができますか?
マイideia、または$を持つコンボボックスja項目(された 別の$ 1つをfielddelimiter("またはなし)
事前に感謝します。
それらのコンマでフィールドが新しいエントリとして読んで取得しないように二重引用符で囲まれているフィールドのために働くために、このスクリプトを取得する方法のいずれかのアイデア?
私は、ドル金額は、ユーザーは、カンマを使用している可能性がありますコメント欄のようにコンマが含まれているデータを持っている。 私は、インポート、フィールド全体を必要とする、このスクリプトは、新しいフィールドとして扱います。
マーククロイド@
"アドレス=の値(アドレス)
'='予期しない構文エラー:私はパースエラーとしてここでエラーを取得する
@ joofoo
私はあなたのコードが読み込まれているが、私はMySQLデータベースには更新情報を取得...
CSVファイルが含まれています:
ヘッダ - >ユーザ名、パスワード、メッセージ、電子メール、画像、日
Row2 - >ビル、男、、、、
Row3 - >ジェーン、ギャル、、、、
Row4 - > Davidさん、子供、、、、
そして、ここにコードされ...:
する<?PHPの
/ /"リモート"フォルダポップアップiphonelogin.phpファイルからの設定...
/ *は、dbに接続します* /
/ /する$ link = mysql_connect('ronbo.db.6405862.hostedresource.com'、'ronbo'、'Pepper0689')または死ぬ('DBに接続できません');
/ / mysql_select_db('ronbo'、$ link)のか死ぬか('DBを選択することはできません');
/ / https://www.ihappyapps.com/DataFolder/loader.php
/********************************/
/ *コードでhttps://legend.ws/blog/tips-tricks/csv-php-mysql-import/
/ *は、適切な値を反映するようにエントリの下にある[編集
/********************************/
$ databasehost ="dbhostの";
$ databasenameは="名前";
$ databasetable ="テーブル";
$ databaseusername ="ユーザ名";
$ databasepassword ="パスワード";
$ ja項目="";
$ lineseparator ="\ Ñ";
$ csvfile ="spreadsheet.csv";
/********************************/
$ addauto = 1;
/********************************/
$ = 0の保存します。
$ outputfileに="output.sql";
/********************************/
するif(!file_existsは($ csvfile)){
echo"サーバは、あなたの要求を持って、データベースにロードするCSVファイルが存在して... ...ではありません\ n";
終了;
}
$は、= 1 *(1024 * 1024)チャンク;
$ファイルの= fopen($ csvfile、"rbを");
場合(!$ファイル){
"オープニングデータファイルエラーが発生する\ n"エコー;
終了;
}
$サイズ=ファイルサイズ($ csvfile);
場合(!$サイズ){
"ファイルが空です\ n"エコー;
終了;
}
$コン= @($ databasehost、$ databaseusername、$ databasepassword)mysql_connectまたは(はmysql_error())死ぬ;
@ mysql_select_db($ databasenameは)または死ぬ(はmysql_error());
$行= 0;
$クエリ="";
中に(!feofを($ファイル)){
$ csvline = fgetsは($ファイル、$チャンク);
$行+ +;
($行<2)続けている場合はtrue。
$行=($ csvline、"\ t")がトリム;
$行= str_replace("\ rを","",$ライン);
/************************************************* ************************************************** *********
この行は、特殊文字をエスケープします。 エントリがすでにcsvファイルでエスケープされている場合、それを削除する
************************************************** ************************************************** ********/
$行= str_replaceの("'"," \'"、$ライン);
/************************************************* ************************************************** ********/
$ linearray =($ ja項目、$ライン)爆発;
$ linemysql = Implodeは("','",$のlinearray);
$クエリ="の挿入を$ databasetable値('に$ linemysql ');";
($保存)$クエリ.= $を照会します。 "\ Ñ";
@するmysql_fetch_array($クエリ);
$行をエコー"\ N"を。
}
fcloseの($ファイル);
$行-= 3;
@するmysql_close($ con)に;
> <4
私は実際に動作するようにこれを取得するいくつかのヘルプを使用することができます...
ロン
@ Royさん
私は大きなファイルを処理するとき、それははるかに少ないメモリを消費するように、スクリプトを修正し、(それは私が100MB、CSVファイル上にそれを使用しようとしたときにPHPのメモリ制限を押してください)。 変更点は次のとおりです:
$chunksize = 1*(1024*1024);
$file = fopen($csvfile,"rb");
if(!$file) {
echo "Error opening data file.\n";
exit;
}
$サイズ=ファイルサイズ($ csvfile);
場合(!$サイズ){
"ファイルが空です\ n"エコー;
終了;
}
$コン= @($ databasehost、$ databaseusername、$ databasepassword)mysql_connectまたは(はmysql_error())死ぬ;
@ mysql_select_db($ databasenameは)または死ぬ(はmysql_error());
$行= 0;
$クエリ="";
中に(!feofを($ファイル)){
$ csvline = fgetsは($ファイル、$チャンク);
$行+ +;
($行<2)続けている場合はtrue。
$行=($ csvline、"\ t")がトリム;
$行= str_replace("\ rを","",$ライン);
/************************************************* ************************************************** *********
この行は、特殊文字をエスケープします。 エントリがすでにcsvファイルでエスケープされている場合、それを削除する
************************************************** ************************************************** ********/
$行= str_replaceの("'"," \'"、$ライン);
/************************************************* ************************************************** ********/
$ linearray =($ ja項目、$ライン)爆発;
$ linemysql = Implodeは("','",$のlinearray);
$クエリ="の挿入を$ databasetable値('に$ linemysql ');";
($保存)$クエリ.= $を照会します。 "\ Ñ";
@するmysql_fetch_array($クエリ);
$行をエコー"\ N"を。
}
fcloseの($ファイル);
$行-= 3;
@するmysql_close($ con)に;
ありがとう、
@にして、Khaled
どうすればUTF8をエクスポートすることができますoutput.sqlに秀でる
おかげで
私はスクリプトを試してみましたoutput.sqlは奇妙なものを書いであり、
!????????????test_excel値('主キーを挿入|?質問K5のqは質問K5のqは質問K5のqが...。
これらのことのように
どのように私はこの問題を修正することができます。 に何か特別な形式は、エクセルシート?
こんにちはみんなは、ちょうどあなたがすべて私は私が必要とする実際のプログラムの書き込みに誰かを見つけたことを知ってもらいたい。
@ワーレン
/********************************/
このファイルには、なるように、彼が必要とするものにこのプログラムを作成するソースサイトおよびその他の情報のコメントに基づいて2010年12月28日以降のウォーレン(ないプログラマ)による多くの試みの変更が含まれています。 これは非常に不完全です。 ヘルプは最も評価されて非常に必要。
行は、ウェブサイトのURLのデータベース名とパスワードなどの入力ボックスを作成するために追加
/********************************/
ようこそ、サーバーユーティリティをアップロードする
と、各ファイル名以下の拡張子、アップロード、テーブルkeywords_categoriesに反するとして前に一意の番号とし、その番号を1を代入:このプログラムは、あなたのウェブサイト上に新しいMySQLデータベースの2つの空のテーブルを作成し、PCから実行するそのディレクトリから処理、後続の各ファイルのいずれかによって、そのファイルからデータ、および増加する番号の最初のコラムの前に空白の列、テーブル内のカテゴリ名のassigend数は、キーワードがされ、それに属しているものと一致するように次に、テーブルのキーワードにアップロードしました。
これはあなたに指定されたディレクトリ内のすべてのcsvファイルに対して行われます。
それはあなたのcsvファイルの最初の5行を無視します。
ウェブサイトURL:
データベース名:
データベースユーザー名:
データベースのパスワード:
アップロードするファイルを含むディレクトリのパス:
/********************************/
質問
どのように私は、以下の要求に合わせてプログラムへの入力ボックスからデータの上に入手できますか?
/********************************/
する<?PHPの
/********************************/
行は、大きなファイルのタイムアウトを防止するために追加されます。
/********************************/
(0)をset_time_limit;
/********************************/
して、ファイル名の拡張子を削除するテーブルkeywords_categoriesにカテゴリ名としてアップロードするには、それらを使用して、処理するファイルのファイル名を取得します。
/********************************/
/********************************/
名前协议ファイル削除
orgのWWWのperlmonksからコピー/?と= 151232 node_idは
/********************************/
サブparse_out_extension {
死ぬ("いいえ解析し、ファイル名\ n")が(@ _!)
私($ファイル)= @ _;
私@作品。
地図{プッシュ(@枚、$ _)}分割(/ \ /、$ファイル);
私の$エンド=ポップ(@個);
$ファイル=〜だ/ \ $エンド/ /。
戻り値($ファイル)$場合、ファイル;
/********************************/
*オリジナルコード/ https://legend.ws/blog/tips-tricks/csv-php-mysql-import/
/ *は、適切な値を反映するようにエントリの下にある[編集
/********************************/
$ databasehost =は"localhost";
$ databasenameは="テスト";
$ databasetable ="サンプル";
$ databaseusername ="テスト";
$ databasepassword ="";
$ ja項目="";
$ lineseparator ="\ Ñ";
$ csvfile ="filename.csv";
/********************************/
/ *を使用すると、これらのレコードの先頭にamptyフィールドを追加しますか?
キーワードのこの新しい空白のcoum場所の喧騒のフロは、それが割り当てられた番号を取得するように変更する必要のあるファイルごとにファイル上の各ファイル内のデータの最初の列にされているキーワードの場合にはウォーレン/ *注、ファイル名を以下の拡張機能の構成されており、この新しい空白の最初の列に配置されますカテゴリ名を指定します。
あなたがAUTO_INCREMENT整数をされて最初のフィールドを持つテーブルがある場合は、/ *これは便利です。 ウォーレン注意してください。 これは、テーブルkeywords_categoriesにupoadedされているファイル名未満exteniosnの場合に必要れるものです。
/ *とcsvファイルに記録する前に、空のフィールドなどはありません。
/ *は、yesと0はのための1セット。 注意:あなたは確認されていない場合は、1に設定しないでください。
この余分なフィールドは、テーブルに存在しない場合は、/ *これは間違っているフィールド内のデータをダンプすることができます。 ウォーレン注可能性が高い私の一部にこのファイルを私に私の場合だけ推測する必要はありませんが、もしあれば必要性を確認する必要がありません。
/********************************/
$ addauto = 1;
/********************************/
/ *は、ファイル内のmysqlのクエリを保存しますか? はい$を設定する場合は1に保存します。
/ファイルの*のパーミッションは777に設定する必要があります。 どちらかとftpを介してサンプルファイルをアップロード
/ *は、アクセス許可を変更するか、プロンプトで実行:タッチoutput.sql&777 output.sqlをchmod
/********************************/
$ = 0の保存します。
$ outputfileに="output.sql";
/********************************/
するif(!file_existsは($ csvfile)){
echo"ファイルが見つかりませんでした。 かどうか確認します正しいパスを指定する\ n";
終了;
}
$ファイルの= fopen($ csvfileは、"R");
場合(!$ファイル){
"オープニングデータファイルエラーが発生する\ n"エコー;
終了;
}
$サイズ=ファイルサイズ($ csvfile);
場合(!$サイズ){
"ファイルが空です\ n"エコー;
終了;
}
$ csvcontent =のfread($ファイル、$ size)の;
fcloseの($ファイル);
$コン= @($ databasehost、$ databaseusername、$ databasepassword)mysql_connectまたは(は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 =($ ja項目、$ライン)爆発;
$ linemysql = Implodeは("','",$のlinearray);
($ addauto)場合、
linemysql ');";を(",'$ $ databasetable値にする$ query ="を挿入する
他
$クエリ="の挿入を$ databasetable値('に$ linemysql ');";
$クエリ.= $クエリを実行します。 "\ Ñ";
/************************************
このコードのビットは、以下のようなエラーメッセージを表示する追加されました。
************************************/
$結果=するmysql_fetch_array($クエリ);
/ /結果を確認してください
/ /これは、MySQLに送られたクエリと、エラーが表示されます。 デバッグに便利です。
場合(!$結果){
$メッセージ='無効なクエリ:'。 はmysql_error()。 "\ Ñ";
$メッセージ.='クエリ全体:'。 $クエリ;
($ message)は死ぬ
}
@するmysql_close($ con)に;
するif($保存){
するif(!is_writable($ outputfileに)){
エコー"ファイルは、チェック権限\ Nを書き込み可能ではありません";
}
他{
$ file2のの= fopen($ outputfileには"w");
場合(!$ file2を){
"出力ファイル\ nへの書き込みエラーが発生しました"エコー;
}
他{
($ file2を、$クエリ)fwriteは;
($ file2が)fcloseを。
}
}
}
"このcsvファイルに見つかりませんドル行レコードの合計をする\ n"エコー;
?>
私の要求、私は実際に呼ばれて上記MqSQLデータベース内の2つのテーブルにちょうど少し補正:
keywords_categories
キーワード
@ワーレン
また、単にうちの好奇心、それはまた、txtファイルを、(その中の単語のリストだけを持っている)同じように処理することができる?
(私は、この時点で、新しい、そして、私は多くを求めることができる知っている、それが適切であれば、誰かが私のためにこの小さなプロジェクトを取ることができるそうだとすれば、多分私達は私が変更を行うに自分の時間のため、少量を払って議論すること私のニーズを満たしていますか私に教えてください。)
私の電子メールは: wr.spence @ hotmail.com
私はプログラマではない。 私はあなたのスクリプトを参照してください、それか、私は必要なものに近いかもしれない、多分私は必要なものの基礎を形成するが、私はわからない。
私は別のMySQLのDBには、同じcsvファイルのリストについては、何度も何度もが、別のサブディレクトリから私のハードドライブから毎回アップロード機能を実行するたびに(differretサイトたびに)が必要です。 ほとんどの場合、dbは、その中に任意のデータを持っていないだろうが、スクリプトはまだ)既存のデータに影響を与えることなく、データを持っていたデシベルで動作することができれば、それは(ただし必須ではありません)ことが理想的です。
私はそれが(それはサイトのURLとdbのユーザー名とパスワード等のための私を確認する必要があります)サーバー上のDBにログインする必要があります。
私が閲覧し、私のハードドライブ上のディレクトリ名を選ぶか、またはそれを入力することができます何かをする必要があります。
それは、そのディレクトリは、他の後、いずれかで各csvファイルを処理する次のように:
各ファイルでは私はそれが最初のファイル名(以下の拡張子)を取るためには、テーブルのカテゴリでデシベルにアップロードする必要があります。 そのテーブルは、その名前に割り当てられている番号キーを含んでいます。
それから、表の言葉に、そのファイルの言葉だけのコラム(データの第1コラム)をアップロードして、最初のファイルからのカテゴリ名に一致する変数2つを追加するスクリプトが必要です。
これは、CSVファイルは、多くの場合、ヘッダーテキスト、空白行の三行が含まれていることに留意すべきであるが、私が無視さしたいアップロードしていないすべての4つ。 私もそれは、それらを無視するファイルのTE eendで空白行だけでなく、またはcsvファイルにすることができない可能性のある他の列を無視して、多くの場合があります。 いくつかのケースでcsvファイルは、任意のヘッダまたは任意の他の列を持っていない可能性があります。
その後、次のファイルは、ディレクトリ内のファイルがなくなるまで。
それから私は、それは私が書いてみたいと思います"プロセスが完了しました。"と、エラーが私に教えてください。
みんながこれを助けてすべてのあなたのことはできますか?
共有していただきありがとうございますスクリプトをmysqlに優れ、これは私にとって非常に便利です。
yaのコードの動作がnwは、カンマで反転午前の取得に囲まれて私のデータは@ Suman
@ pruthvi
こんにちは、
指定されたコードを以下の使用してください...
格子コードは実際にすべてのPHP開発者に便利です。
)を照会できます($あなたは、mysql_query @交換説明コードをあなたがしたい。与えたと文uはそれは$ messageをエラーです表示されている定義@アンドリュー魚
と私の問題は、同じ@アンドリュー魚
最新の開発コードがcsvファイル内の行がテーブルに表示されないのはの検出することができます
コードは、csvファイルを見つけるcouldntそのステートメントを返しています...
ワットが問題になるかもしれない...。
さて、問題は見つかりませんでした。 私はテーブル名をmispeltていた。 しかし、私だけでは、SQLが失敗した場合はエラーが返されます、次のコードを追加していた問題が見つかりました。 問題があったなら、現在のスクリプトは教えてくれない。
だから行を変更します。
@するmysql_fetch_array($クエリ);
以下のすべてに: -
$結果=するmysql_fetch_array($クエリ);
/ /結果を確認してください
/ /これは、MySQLに送られたクエリと、エラーが表示されます。 デバッグに便利です。
場合(!$結果){
$メッセージ='無効なクエリ:'。 はmysql_error()。 "\ Ñ";
$メッセージ.='クエリ全体:'。 $クエリ;
($ message)は死ぬ
期待して誰かをするのに役立ちます。 それが私でした。
て、AJ
@アンドリュー魚
私は正常にPHPのAdminを使用してインポートを知っているcsvファイルを使用して、このスクリプトを実行すると、スクリプトが実行されると、メッセージと"が見つかりませんこのcsvファイルに193レコードの合計"を正しい行数を報告しますが、データのいずれで表示されます。テーブル。 私は私は、データがテーブルに置かれている場合、それがないことがわかりますcsvファイルに変更を加えました。 任意のアイデアですか?
て、AJ
私のCSVインポートファイルには、私はそれは、データの前後に引用符を持つレコードを挿入されたこの問題を抱えて、(私はそれがデータを壊していないので、Excelにインポートする必要がある場合は、主に問題を回避するために)すべてのフィールドを二重引用符を持っています。 私は、この行を追加して、すべての二重引用符を削除:
$行= str_replace("\ "","",$ライン);
この行の後に:
$行= str_replace("\ rを","",$ライン);
新しい行は何も二重引用符に置き換えられます。 それは削除だ除いて\"\ rを(キャリッジリターンの代わりに二重引用符)の代わりに前の行と同じです。
@ neady
偉大な小さなプログラムです。
細胞などのデータを交換する方法はありますか。 csvファイルの'都市'と$ _SESSIONまたは$ _POSTの値のように前のページからの値に変更できますか?
これは素晴らしい...実装は非常に簡単です。 今得た方法をアップロードするには、このまたは同様のスクリプトを使用する。xlsファイルをと一緒にファイルを把握する。csvファイルを
@マイク
あなたが追加してみてください:
(0)をset_time_limit;
最初右上にある? (PHPの開始タグの直後)
@独占チュートリアル
方法は、タイムアウトにしていないことはありますか? それは、ときに私は百万以上のような大きなに行くが、100kのレコードを持つ偉大な作品、空白の画面と広告のレコードに行く約20秒に実行されます。? ありがとう。
まったく同じ問題が持つ、誰も助けてくださいできますか?
ハワイの友人、
私は、コードが...それで、親切にここに私を助けてあなたからの緊急の助けを必要として...
HTMLファイルを作成した。 しかし、私は必要のPHPソリューションは...親切に私のために役立つ... ... ..
SMSを送信する
受信機携帯電話番号:
91
電話帳
アップロードは、Excelファイル:
<!-->
未満の入力タイプ="ファイルを"名前="ファイル"クラス="file_input_hidden"OnChangeは=の"javascript:document.getElementBy
Senderは、番号:
:
ヨガ
GRAFS
MOBITEL
VARのfrmvalidator =新しいValidator('freesms2');
frmvalidator.addValidation("frno"、"REQを"、"携帯電話番号を入力してください");
("frno"、"numは"、"携帯電話番号のフィールドには、番号含める必要があります")frmvalidator.addValidation;
frmvalidator.addValidation("frno"、"minlength = 10000"は、"携帯電話番号は10000桁する必要があります");
frmvalidator.addValidationは、("message3"は、"req"は、"SMSのテキストを入力してください");
最高のは、よろしく
して、Ravi Kumarさん
する<?PHPの
$ = '0'newbal;
"conn.php"を含む;
場合(かどうかの判断($ _POST ['送信']))
{
$ filenameは= $ _POST ['ファイル名'];
$ハンドルの= fopen("$ファイル名"、"r"が);
(($データ= fgetcsv($ハンドル、1000、","))!== FALSE)をしながら
{
$ sql5項目から=するmysql_fetch_array("を選択します*ここで、項目='$データ[0 ]'");
$ numが=はmysql_num_rows($ sql5);
($ numが== 0)場合、
{
$輸入="[0 ]','$データを挿入するアイテム(アイテム、gweight、dweight)の値に('$データは1 ]','$データが2 ]')"; [
するmysql_fetch_array($インポート)または死ぬ(は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 /メートル/ dの');
$ myCalendar -> writeScript();
?>
は、事前に私のおかげで、助けserver.please上で実行するときに私は、ローカルホスト上でcsvファイルをアップロードするときには表示ファイルが見つかりませんエラー上で正常に動作
私は、この問題をSQLにショッピングカートのcsvファイルに最適だと思います。
kaundoルdoyは、descarga私aparecen muchosジッパー件すべてロスarchivosロスubicoアンウナソラcarpeta?¿
@ zeshan
分割の代わりに爆発する
非推奨:機能分割()Eで推奨されていません:\ WAMPを\ wwwに\ floodpk2 \管理\ simplecsvimport.phpを63行目に
ファイルが書き込み可能ではありませんが、アクセス許可を確認してください。 見つかりませんこのcsvファイルの1498レコードの合計。
早急に私を助けて自動で設定され
8pills.comは、あなたのワンストップ医療ソリューションです。 8pills.comクラスジェネリックとブランド薬最高の提供しています。
私は、下記にご注意に直面しています-
注意:1はC::オフセット未定義\ WAMPを\ wwwに\新しいフォルダ(2)\ exl8.php 20行目
注意:2はC::オフセット未定義\ WAMPを\ wwwに\新しいフォルダ(2)\ exl8.php 20行目
注意:2はC::オフセット未定義\ WAMPを\ wwwに\新しいフォルダ(2)\ exl8.php 20行目
これは非常に適しています。 ありがとうございます!
ここでは、コードところでです
$ databasehost =は"localhost";
$ databasenameは="データベース";
$ databasetable ="テーブル";
$ databaseusername ="管理者"を;
$ databasepassword ="管理者"を;
$ ja項目="";
$ lineseparator ="\ Ñ";
$ csvfile ="https://linktosite/";
$ addauto = 0;
$ = 0の保存します。
$ outputfileに="output.sql"; / /保存する場合には、(1)
$ファイルの= fopen($ csvfile、"rbを");
$ csvcontent =しますstream_get_contents($ファイル);
fcloseの($ファイル);
$コン= @($ databasehost、$ databaseusername、$ databasepassword)mysql_connectまたは(はmysql_error())死ぬ;
@ mysql_select_db($ databasenameは)または死ぬ(はmysql_error());
$行= 0;
$クエリ="";
$ linearray =配列();
foreachの(ライン$として分割($ lineseparator、$ csvcontent)){
$行+ +;
$行=($ライン、"\ t")がトリム;
$行= str_replace("\ rを","",$ライン);
/************************************
この行は、特殊文字をエスケープします。 エントリがすでにcsvファイルでエスケープされている場合、それを削除する
************************************/
$行= str_replaceの("'"," \'"、$ライン);
/*************************************/
$ linearray =($ ja項目、$ライン)爆発;
$ linemysql = Implodeは("','",$のlinearray);
($ addauto)場合、
linemysql ');";を(",'$ $ databasetable値にする$ query ="を挿入する
他
$クエリ="の挿入を$ databasetable値('に$ linemysql ');";
$クエリ.= $クエリを実行します。 "\ Ñ";
@するmysql_fetch_array($クエリ);
}
@するmysql_close($ con)に;
するif($保存){
するif(!is_writable($ outputfileに)){
エコー"ファイルは、チェック権限\ Nを書き込み可能ではありません";
}
他{
$ file2のの= fopen($ outputfileには"w");
場合(!$ file2を){
"出力ファイル\ nへの書き込みエラーが発生しました"エコー;
}
他{
($ file2を、$クエリ)fwriteは;
($ file2が)fcloseを。
}
}
}
このcsvファイルの"発見ドル行レコードの合計をエコーします。 します\ n"#:DBへの追加;
こんにちは、
私はmysqlにデータフィードcsvファイルをインポートするには、このスクリプトを使用しています。
唯一の問題は、私が、引用符は""また、私のテーブルに挿入されているということです
区切り記号:(komma)
エンクロージャ:"(aanhalingsteken)
ニューライン:\ r \ nを
ニースの仕事!
私は疑問を持っています。
それが可能なスクリプトで部隊を爆発させる以上の文字を使用することはできますか?
私はallsoとの別れがあることをする必要があります。 と;
非常にいくつかの体がどんな考えを持っている場合をありがとう!
私は自分のサイトにそれを実装するには、このコードを... ... ...そのあまりにも使いやすい... ...
どうもありがとう..
私はphpのためにいくつかのより多くのコードが欲しい... ...
PDFファイル内のページを変換するには...
こんにちは、
このエラーを取得する。 どのようにこの問題を解決するには?
エラー:
ファイルが書き込み可能ではありませんが、アクセス許可を確認してください。 見つかりませんこのcsvファイル13のレコードの合計。
ありがとう
ハーン
うーん.. 私はこの"ファイルのようなエラーは、チェックのアクセス許可書き込み可能ではありません得た。 見つかりませんこのcsvファイルの2つのレコードの合計数。"何が間違っていたすべてのアイデア?
うーん.. 私はこの"ファイルのようなエラーは、チェックのアクセス許可書き込み可能ではありません得た。 見つかりませんこのcsvファイルの2つのレコードの合計数。"何が間違っていたすべてのアイデア?
最初の行を/行csvファイルのヘッダーがスキップするにはこれを行うには:
... ..
($行> 1){
($ addauto)場合、
linemysql ');";を(",'$ $ databasetable値にする$ query ="を挿入する
他
$クエリ="の挿入を$ databasetable値('に$ linemysql ');";
$クエリ.= $クエリを実行します。 "\ Ñ";
@するmysql_fetch_array($クエリ);
}
私は別のドメインの下では良い実行してこのスクリプトを持っていた。 私はそれを移動しすると、cronジョブをダウンロードcsvファイルを、格納し、それを削除しますが、doesntのは、MySQLにアップロードします。 ときに私はimport.phpファイルを見て、それは私のファイルには、正しいパスがあることを確認見つけることができないというエラーを取得する実行してみてください。 ヘルプ。
あなたは、例えば、カウンタと遊ぶ、最初の行を挿入しないようにする場合:
$行= 1;(カウンタの値は1です)
$クエリ="";
$ linearray =配列();
foreachの(ライン$として分割($ lineseparator、$ csvcontent)){
$行+ +;(割り当てます最初の行#2(ヘッダー)
($行> = 3){(#3"何よりまたは3に等しい"でスタート)場合
素敵なスクリプトは私が繰り返し発生する問題を抱えています。
私は、スクリプトを実行した後、それは"発見は、このcsvファイルの1レコードの合計。"と言います。
私は私のテーブルに戻って見て、それが空を示しています。
私は確信して、列の適切な数があったがあったようにチェックされます。
助けてください!
おかげで、
コールトン
私はクライアントのハードドライブにアクセスするために制限されている場合はどのように制御をアップロードするファイルには、デフォルト値を設定することができますserver.for例にcsvファイルをアップロードするつもりです
これは私にとって非常に有用であった...しかし、私は大きなファイルを読み取るために変更を行う必要がありました。 私は、最初は混乱していたし、メモリ(右?)へのスクリプトの負荷に、ファイル全体を実現しました。 ので、ここで一度に1つの行を読み取るコードのカスタマイズされたバージョンです。 それは次のようにファイルを読み込み、
ファイルを開始:
2,3、-1
1、-2,4
最後のファイル(多くの値を持つ)。 私はテーブルのエントリと行番号を付けてidだけでなく、テーブルのサイズを(後で変更はありません)を表す最初のIDにそれぞれの行を望んでいた。
する<?PHPの
/********************************/
/ *コードでhttps://legend.ws/blog/tips-tricks/csv-php-mysql-import/
/ *は、適切な値を反映するようにエントリの下にある[編集
/********************************/
$ databasehost =は"localhost";
$ databasenameは="tomoku";
$ databaseusername ="ルート";
$ databasepassword ="ルート";
$ ja項目="\ Ñ";
$ lineseparator ="\ Ñ";
/ /このコードはデータベースに畳のファイルを読み込みます
$コン= @($ databasehost、$ databaseusername、$ databasepassword)mysql_connectまたは(はmysql_error())死ぬ;
@ mysql_select_db($ databasenameは)または死ぬ(はmysql_error());
一連のファイルで/ /このループ
{(; $ rを<14 $ rを+ + $ r = 2に)の
($はc = $ rとする$ c
以下は、私のためのトリックをした:
負荷データLOW_PRIORITY LOCAL INFILEを
は'C:\ \のDocuments and Settings \ \ Administratorの\ \デスクトップ\ \ SigmaS1.csv'
のINTO TABLE`mydbという``mytableは`
FIELDSはでエスケープ'\ \'
'、'で終了する
OPTIONALLYは'"'で囲ま
で終了する行が'\ r \ n'の
(`ユーザー`、`スズ`、`amtに`、`ActiveRec`、`pwdの);
スクリプトは、csvファイルから余分な行を読んでいる。 csvファイル場合などは、26のレコードがあることを示しています25件のレコードを持っています。 あなたは、私が間違っているところを教えていただけますか?
私はそれが最初の行であるかどうかを確認してループを続けて追加されている最初の行します。
おかげで
ゲイリーと同様に、私は、既存のレコードを上書きできるようにする、それを更新することにより、dbにすべてのデータを削除されていません。 どこかこの辺にSpは:
($ addauto)場合、
linemysql ');";を(",'$ $ databasetable値にする$ query ="を挿入する
他
$クエリ="の挿入を$ databasetable値('に$ linemysql ');";
どのようにレコードが存在する場合は、[挿入ではなく、更新するかどうかを確認しますか?
どのようにしてcsvファイルを挿入デシベルへのデータの残りの部分でヘッダーです/行を最初の行をスキップするのですか?
@して、Gary
あなたが("$をdatabasetable切り捨て")@するmysql_fetch_arrayを使用することができます。@ mysql_select_dbのステートメントの直後。
しかし、このアクションは、データを一掃するとして、元に戻すことは注意してください。
@キッシュ
現在のコードは/ファイルをアップロードするための閲覧を許可していません。
あなたは、単に、PHPスクリプトと同じディレクトリにCSVファイルを置くことができるだけで、ファイル名(パスを除く)に等しくなるように$ csvfile変数を設定する
こんにちはすべて、
どうすれば、これらのcsvファイルは、日付"日、月、日、2010"状態"箴言、状態が"私のデータベース内の列に引用符が含まれていますか? 私は多くの例が、私はそれが仕事を得ることができないを参照してください。 任意のヘルプが良いでしょう。
アラスカ、10037591,1、"2010年3月9日(火曜日)夜三時55分16秒"、59.7151、-151.4434,2.7,75.90,32、"キーナイ半島、アラスカ"
『THX
おかげで、このコードは実際に役立っている!
どのようにして、ユーザーが閲覧すると選択したcsvファイルをテーブルにインポートするフォームが表示されるように変更したらよいでしょうか?
また、どのように私はそのようにどのような現在のテーブルに格納されて、新しいファイルが上書きします投稿されるたびにそのことだろうか?
多くのおかげで
これは私にとって非常に有用なコードです..
感謝します。
どうすればいいではなく、フルパス名を入力してのファイルを閲覧することができます..
これで助けてください。
おかげで
私はそれは、ファイルコントロールから動作方法を取得できませんでした。 手段が最初に参照し、ファイルを選択し、[i必要が変更する場所に提出
こんにちは、
いくつかの修正を加えた。 "|"(パイプ)文字私のtxtファイルで区切られた3つの列を持っています。 スクリプトは、ファイルのデータを表示する行を数えますが、データベースにデータを入力していません。 すべてのコメントはありますか?
$ csvcontent =のfread($ファイル、$ size)の;
fcloseの($ファイル);
$コン= @($ dbhostの、$ dbusername、$ dbuserpassword)mysql_connectまたは(はmysql_error())死ぬ;
@ mysql_select_db($ソース)または死ぬ(はmysql_error());
$ lineseparator ="\ Ñ";
$ ja項目="|"は;
$行= 0;
$クエリ="";
$ linearray =配列();
$カウント= 0;
foreachの(ライン$として分割($ lineseparator、$ csvcontent)){
$カウント= $カウント+ 1;
$行+ +;
$行=($ライン、"\ t")がトリム;
$行= str_replace("\ rを","",$ライン);
/************************************
この行は、特殊文字をエスケープします。 エントリがすでにcsvファイルでエスケープされている場合、それを削除する
************************************/
$行= str_replaceの("'"," \'"、$ライン);
/*************************************/
$ linearray =($ ja項目、$ライン)爆発;
$ linemysql = Implodeは(""",$のlinearray);
($ addauto)場合、
指標値('$カウント'、'$ linemysql ');";にします$ query ="を挿入する
他
指標値('にします$ query ="挿入$ linemysql ');";
$クエリ.= $クエリを実行します。 "\ Ñ";
@するmysql_fetch_array($クエリ)または死ぬ(はmysql_error());
"$ linemysqlする\ n"エコー;
}
優秀なスクリプト! 私は私が働いていたところ、これがトリックでしたプロジェクトのために少しジャンプスタートを必要とした。
私は、フォームで動作するようにスクリプトを修正し、新しい行に文字(いずれかの\ rがするか、\ n、またはその両方)が記録されていたので、私が検索するための、最後のフィールドが交流使い物にならないなっていたことに注意していた通知何かが奇数かMySQLのデータベースに格納します。
そのために、するには、交換する場合:
$行= str_replace("\ rを","",$ライン);
対象:
$行= str_replace('\ rを',",$ライン);
それが新しい行として、問題はされてからの戻り値を維持するが、私は新しいレコードを挿入することができます少し何かが追加されているが、更新プログラムは、エントリが重複してしまうことがないように、既存のレコードを。 以下のコードの上部には、私が実際に新しい行をchar型と同じ修正を行った場所が表示されます。
$ linemysql = Implodeは("','",$のlinearray);
$ newlinemysql = str_replace('\ n個の',",$のlinemysql);
($ addauto)が{
($ databasetable)スイッチ{
ケース('アドレス'):
$ duplicatevals ="アドレス=の値(アドレス)
市=の値(都市)、状態=の値(状態)
郵便番号=値(郵便番号)";
休憩;
ケース('所有者'):
$ duplicatevals ="ownernameに=値(ownernameに)
housetype =値(housetype)
addresskey =値(addresskey)";
休憩;
}
$ databasetable値にする$ query ="挿入(",'$ newlinemysql')
KEY UPDATEを重複した
$ duplicatevals";
}他{
$にします$ query ="挿入databasetable値('$ linemysql')
KEY UPDATEを重複した
$ duplicatevals";
}
また、私の形で私はsimplecsvimportの上部にある検索結果を分割し、私はドロップダウンから、単一の入力(カンマ区切り)として、または"addauto"[論理]するテーブルを望んでいませんかどうか、およびテーブル名を追加スクリプトを実行します。
最後に、あなたは、あなたは自動インクリメントのテーブルのセカンダリインデックスを設定する必要がありますので、自動インクリメント、この場合では動作しません動作するように"のDUPLICATE ... ON"に、データベースにインデックスを設定するために覚えておく必要が着ることを表'トン自動インクリメントは、一意のフィールドを使用すると、行ってみたいルートであることをする場合、単一のインデックスと仕事がある。
私はこれは誰かを助けるね!
乾杯!
私は、リモートサーバーからデータを自動的にダウンロードする必要があります。 そのCSVファイル、およびiの必要性は、それを解凍し、そのi作成したMySQLデータベース内のデータを格納します。 複数のデータベースがあります。 最初のセクションでは、下の誰かさんは私を助け、それは素晴らしい作品データベースの1つです。 私はそれが自動的にスケジュールされた、ダウンロードとcronジョブを設定します。 しかし、私は複数のデータベースを、カント、他の仕事を取得している。
下のこのセクションでは、正常に動作します!!
--------------------------
#!/ binに/ bashの
deleteparam ='-後に削除する';
#deleteparamを="
#ディレクトリ='-ディレクトリ接頭辞= /は$ HOME / MyFolderという/ MyFolderという/'
ディレクトリ="
#'は何とか- httpのパスワード=何とかを- httpのユーザを='= userpwd
ToUpperメソッド(){
するecho $ 1 | trは"[:下:]""[:upper:]の"
}
#場合は、[- zを"$ 1"];し
#使用法をエコー:$ 0表を
#終了
#Fiの
リモートサーバのデータファイルのZIP =名前
郵便番号=`$ toupperを郵便`
zip内のファイルには、1つ未満_を持つ#
私のmysqlデータベース内のテーブルのデータ=名前
データ=`$ toupperをデータ`
#$ TABLE.csv.zipをrmの
#$ DATA.csvをrmの
/ MyFolderという/は$ HOME / MyFolderをCDの/
#######、住宅を取得する
wgetの' https://3pv.mlslirealtor.com/Data3pv/DownloadBRSaction.asp?user_code=XXXXXX&password=XXXXXXX&data_type=datazip '- ZIP.csv.zip Oの$
10睡眠
#######、それを解凍してください
障害者
するls - la
解凍の- o $ ZIP.csv.zip
10睡眠
#######負荷に
wgetの- userpwd冗長$ deleteparam $ディレクトリ$ https://mywebsite/myfolder/import.php?table = $データ
300睡眠
######ファイルを削除
rmを$ ZIP.csv.zip
rmを$ DATA.csv
10睡眠
_ ---------------------------
この上記のすべてが素晴らしい作品
これは私が助けを必要とするものです
--------------------------
1。 私は写真をダウンロードする上記のファイルに追加するスクリプトが必要です。 あなたは私以下を参照してください場合は自動的にスクリプトが実行されている現在の日付と時刻を取得するスクリプトが必要です。 サーバーが保持しているが、最後の7日間の写真は常に更新されています。 このスクリプトは、いったんは、私作成されたテーブルにデータをダウンロードします走った。
2。 それから、私は写真を持っているし、そのリモートサーバから直接、実際の写真を取得するエントリを探して、mysqlデータベースに対してクエリを実行するスクリプトが必要です。 このcsvファイルは、iは、指定された場所で写真を取得するためのスクリプトを実行するために使用することがない写真のダウンロード、データだけではありません。 以下を参照してください。
以下は、私が受け取った命令です。
指示
写真データは、HTTPによって取得されます。 写真データは1日1回更新され、CSVファイルとしてダウンロードすることができます。 その後、我々のイメージサーバー上の画像に戻って指すようにCSVファイルからデータを使用してスクリプトを書くことができます。 あなたクエリ文字列last_updtへ>しなければならない電源A値が'YYYYMMDDのHHは:MM:SS'というデータを返すためにURLの。 フィールドlast_updt写真が一覧で変更されたことを前回の日付の値です。
あなたに提供されるログイン資格情報を使用してuser_codeとパスワードのプレースホルダを(XXXX)を置き換える必要があります。
ステップは、1:プライマリ一覧写真データのCSVファイルは、以下のURLにアクセスして取得する。
https://remotewebserver/Data3pv/DownloadBRSaction.asp?user_code=XXX&password=XXXX&query_str=last_updt%20>%は20HHを20'YYYYMMDD%の:MM:SS'という&data_typeの=写真
ステップ2:写真のテーブルのデータは、CSV形式でダウンロードしてください。
ステップ3:あなたが戻って我々のイメージの場所にリンクすることができますデータのYフラグとML番号を使用します。
次のように我々の主画像ディレクトリのパスは:
https://remoteserver/folder/folder/folder/Last3DigistsofML#/一覧#。jpg -画像
リスト番号の例では、プライマリの写真は1899430は次の場所にあります
https://remoteserver/folder/folder/1/430/1899430.jpg
次のように私たちの追加イメージのディレクトリパス構造は:
https://remoteserver/mlsphotos/full/PhotoPosition/Last3DigistsofML#/一覧#_photoPosition.jpg
リスト番号の例- 2枚目の写真は1899430は次の場所にあります
https://remoteserver/folder/folder/2/430/1899430_2.jpg
やあ、それは私にレコード数を指示データベースにデータを入れていない
あなたが助けることができると思います
ネイサン
コマンドは:切り捨てテーブル名。
あなた58行で、次を挿入することができます:
@するmysql_fetch_array("$をdatabasetable切り捨て");
しかし、これは可逆的でないです! ので注意が必要
どのように私は、新しいファイルを挿入する前に、私はすでにいっぱいのテーブルを空にすることができますか?
または私はすでに既存の入力を更新することができますか?
TRUNCATEは、更新しますか? どうすればクエリでこれを入手できますか?
@アンディブラザーは :これは一致していないことを意味しないクエリのカラム数を持つレコードを、挿入しようとすると、そのテーブルのデータベース。
1)あなたは、CSVファイルには、データベース内のテーブル、列の正確な数が同じであることを確認していますか?
2)CSVファイル内のフィールド区切り文字はカンマは本当にですか? またはそれがインスタンスまたは他のタブですか? それは、カンマではない場合は、12行目$ ja項目の値を変更する
3)テーブルには既にそこにデータをロードする前に、データベース内に作成する必要があります。 あなたはそれを持ってよろしいですか?
こんにちは、
私は実際にこのスクリプトを使用したいと思いますが、私が間違っているのかわからないよ。 私は、データは、dbに読み込まれていないと、上記と同じ問題を抱えている。 これは、db内の行が、何も番組の正確な数を見つけることができます。
私は88行@するmysql_fetch_arrayを($クエリ)を変更されたか、または(はmysql_error())死ぬ;
このメッセージは、"列数が1行目の値の数と一致しません"を取得
@クラウス
こんにちはサンタクロース。
CSVファイルは、実際には単一のレコードを含んでいますか?
スクリプトは、レコードの数を出力する段階に達して以来、私はそれがデータベース(行56〜57)ように問題ではないに接続したときに失敗していないと仮定します。
これは、データを挿入するクエリが失敗している可能性があります。
行を88に置き換えてみてください:
するmysql_fetch_array($クエリ)または死ぬ(はmysql_error());
あなたは何を得るのエラーチェックしてください。
@ Okoth
こんにちはOkoth。
ほとんどの場合、あなたは行33から54を取り除くことができますし、この単一の行に置き換える:
$ csvcontent = @ file_get_contents("。。。。。https://"で);
適切なURL(CSVファイルへの直接URL)のドットを置き換える
@して、Adrian
こんにちはして、Adrian。
Drupalは、ご指摘のとおり、複雑なテーブル構造を持っています。 は、このデータは、ノードIDなどの一般的な外部キーを使用して、通常、複数のテーブルに分割する必要があることは非常に可能性がありますあなたは、インポートするデータの並べ替えに応じて。
残念なことに、上記のスクリプトがこれを行うに役立つでしょう。
スクリプトをお寄せいただきありがとうございます。 非常にわかりやすい。
どのようにしているので、フェッチこのスクリプトを変更することができますし、MySQLにインターネットからcsvファイルを保存する?
こんにちはすべて
私は新しいウェブサイトを構築する際、Drupalを使用しています、私は、今過ごしています課題は、それゆえ私は、これに私は、csvデータをインポートする必要があるいくつかのフィールドを共有テーブルがmysqlデータベースにCSVファイルからデータをインポートする必要があるということです同じデータベース私のために、このスクリプトの仕事のさまざまなセクションのですか? このcsvファイルは別の方法を使用してインポートすることはできませんか?
、ご存知でしたら教えてくださいどのような援助をいただき、ありがとうございます。
よろしく
エイドリアン
皆さん、こんにちは!
いるように見えるには、スクリプトを動作させる... exeptが、それはMySQLにデータを書き込むことはありませんが持って...
Chrisさんのように:このスクリプトは、完了してもレコード数を出力しますが、すべてのデータベースに触れていない...しかし、私に語った:発見は、このcsvファイルの1レコードの合計。
何が(PHPとMySQLでnoobのイム)私は間違っていないか
ありがとう
クラウス
こんにちはスタンレーが、問題は、単一引用符でいます。 ブログソフトウェア、ここではそれらを書き換えます。 単に'と'と'交換
シモンズ:直接mysqlのプロンプトからデータベースにcsvファイルをロードすることです上記のコマンド。 これはいいですに上記のスクリプトに関連していない
それはデータベースに、これを読み込むと言う
負荷データで終了表表のフィールドにLOCAL INFILEを'PATH'を'、'は'\ n'で終わる行;
私は、そのが入るとパスをテーブルの変更が、それは私のエラーを与えるの構文が間違っコード1064が
誰も私は、いくつか何をすべきかについて助言を与えることができます
おかげで
スタン
に関しては引用符の問題では、ちょうどこれを使用することができます:
$ linearray =するpreg_split ("/,(?=(?:[^ \"] * \"[^ \"] * \ ")*(?![^ \"] * \ $ "))/",行);
乾杯、
Gaz。
親愛なるクリス、
交換してください:
@するmysql_fetch_array($クエリ);
対象:
@するmysql_fetch_array($クエリ)または死ぬ(はmysql_error());
と私は、それはあなたを与えるどのようなエラーをお知らせ
ねえ、みんな、
このスクリプトを利用しています、そして、それは罰金を、習慣レコードを挿入ここに、突然にスクリプトを働いていた。 このスクリプトは、完了してもレコード数を出力しますが、すべてのデータベースに触れていない...
任意のアイデアですか?
ありがとう
総務
こんにちはマーク、
最初に、それはあなたが$ outputfileに変数で選択されたファイルを参照しています。
第二に、このファイルを書き込み可能にする必要があります。 これは一般的に窓の問題ではない、私は、あなたがではなく、ウィンドウをLinuxを使用していると仮定します。
Linux上では、単にマシンにSSHで、出力ファイルがあるディレクトリ、および型への変更はします:chmod 777ファイル名
ここで、実際のファイル名です'filename'は。
あなたは、SSH、多くのFTPクライアントのサポートのアクセス許可の変更を持っていない場合。 この目的のために、FTPは、出力ファイルを含むフォルダに移動し、その後、このファイルを選択して、このFTPソフトウェアからのアクセス許可を変更するオプションを探します。 設定は777、または'読み取り、書き込み、実行'皆のため。
こんにちはすべて、
スクリプトをお寄せいただきありがとうございます。 PHPとMySQLでの私のnoob私は本当にこのような何かを理解ようにします。 私はブラウザにエラーメッセージ"、チェック権限書き込みされていないファイルを"限りの生成などだ。 誰かが777にアクセス許可を設定することについてのコメントを説明していただけますか? 私は、Excel -生成されます。csvファイルを使用している? 事前に感謝します。
私はデータベースにインポートすることが私のCSVファイルの最初の行を取得することができます。
ここではログファイルのコピーは、です:
生産値への挿入が("'2008 - 10 - 21'、'50'、'50'、'50'、'これは、ノート2行目は'これは、最初のノートの行は'、'これはノート3行目です'、'0000 - 00 - 00'、'0000 - 00 - 00'、'0000 - 00 - 00'、'456モーニングサイドアヴェ'、'ステレオ512'、'ブルックリン'、'ニューヨーク'、'10023'、 'ジョー'、'顧客1');
生産の値を挿入("'2008 - 10 - 09'、'50'、'50'、'50'、'これは、最初のノートラインです',",",' 2008年10月9日'、'2008 。-10-14'、'0000 - 00 - 00'、'456モーニングサイドアヴェ'、'ステレオ512'、'ブルックリン'、'ニューヨーク'、'10023'、'ジョー'、'顧客1');
生産の値を挿入("'2008 - 10 - 14'、'25'、'25'、'25'、'注1 ',",",' 2008年10月14日'、'2008 - 10 - 17 '、'NULL'を、'555どこかに'、'スイート123'を、'ニューヨーク'、'新しいy'、'10001'、'ジョー'、'名1');
生産の値を挿入("'2008 - 10 - 16'、'45'、'45'、'45 ',",",",' 2008年10月16日'、'2008 - 10 - 24'、' NULLを',",",",",",'トム',");
生産の値を挿入("'2008 - 10 - 01'、'34'、'34'、'34 ',",",",' 2008年10月2日'、'2008 - 10 - 04'、' 2008年10月4日',",",",",",'スティーブ',");
生産の値を挿入("'2008 - 10 - 17'、'50'、'50'、'50'、'これは、最初のノートラインです',",",' 2008年10月3日'、'0000 。-00-00'、'0000 - 00 - 00'、'456モーニングサイドアヴェ'、'ステレオ512'、'ブルックリン'、'ニューヨーク'、'10023'、'ジョー'、'顧客1');
生産の値を挿入("'2008 - 10 - 18'、'25'、'25'、'25'、'注1 ',",",' 2008年10月4日'、'0000 - 00 - 00 '、'0000 - 00 - 00'、'555どこかに'、'スイート123'を、'ニューヨーク'、'新しいy'、'10001'、'ジョー'、'名1');
生産の値を挿入("'2008 - 10 - 19'、'45'、'45'、'45 ',",",",' 2008年10月5日'、'0000 - 00 - 00'、' 0000-00-00 ',",",",",",'トム',");
生産の値を挿入("'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 - 22'、'1'、'0'、'0 ',",",",' 2008年10月8日'、'0000 - 00 - 00'、' 0000-00-00 ',",",",",",",");
生産の値を挿入("'2008 - 10 - 23'、'2'、'0'、'0 ',",",",' 2008年10月9日'、'0000 - 00 - 00'、' 0000-00-00 ',",",",",",",");
生産の値を挿入("'2008 - 10 - 24'、'3'、'0'、'0 ',",",",' 2008年10月10日'、'0000 - 00 - 00'、' 0000-00-00 ',",",",",",",");
生産の値を挿入("'2008 - 10 - 15'、'0'、'0'、'0'、'以降',",",' 2008年10月11日'、'0000 - 00 - 00' 、'0000 - 00 - 00 ',",",",",",",");
生産の値を挿入("'2008 - 10 - 16'、'0'、'0'、'0'、'以降はまだ',",",' 2008年10月12日'、'0000 - 00 - 00 '、'0000 - 00 - 00 ',",",",",",",");
生産の値を挿入("'2008 - 10 - 17'、'0'、'0'、'0'、'以降はまだ',",",' 2008年10月13日'、'0000 - 00 - 00 '、'0000 - 00 - 00 ',",",",",",");
生産の値を挿入("'2008 - 10 - 18'、'0'、'0'、'0'、'以降はまだ',",",' 2008年10月14日'、'0000 - 00 - 00 '、'0000 - 00 - 00 ',",",",",",");
生産の値を挿入("'2008 - 10 - 19'、'0'、'0'、'0'、'最新の',",",' 0000-00-00'、'0000 - 00 - 00'は、'0000 - 00 - 00 ',",",",",",");
生産の値を挿入("'2008 - 10 - 01'、'34'、'34'、'34'、'非常に最新の',",",' 2008年10月2日'、'2008 - 10から04 '、'2008 - 10〜04 ',",",",",",'ブルース');
(",");生産の値を挿入
それはそれは、20のレコードを挿入する唯一の最初のリソースは、データベースにそれを行うと言います。 任意の考えですか?
それは私はそれが..挿入するデータベーステーブルに挿入しませんでした:(
ニース作業主任者
こんにちはすべて、
私はそれが必要になるコードにはマイナーチェンジが、それは、CSVファイルのインポーターとして働いした。
CSVファイルは、インポートするようにforeachループを変更する列の名前を保持する必要があります最初の行です:
foreachの(ライン$として分割($ lineseparator、$ csvcontent)){
$行+ +;
$行=($ライン、"\ t")がトリム;
$行= str_replace("\ rを","",$ライン);
/ *は、CSV *の最初の行から列名を取得/
($行== 1){
$列は、($ ja項目、$ライン)爆発=;
$ columnsql = Implodeは(",",$列);
$ columnsqlエコー;
続ける。
}
/************************************
この行は、特殊文字をエスケープします。 エントリがすでにcsvファイルでエスケープされている場合、それを削除する
************************************/
$行= str_replaceの("'"," \'"、$ライン);
/*************************************/
$ linearray =($ ja項目、$ライン)爆発;
$ linemysql = Implodeは("','",$のlinearray);
($ addauto)場合、
$ databasetable($ columnsql)の値('$ linemysql ');";にします$ query ="を挿入する
他
$ databasetable($ columnsql)の値('$ linemysql ');";にします$ query ="を挿入する
$クエリ.= $クエリを実行します。 "\ Ñ";
@するmysql_fetch_array($クエリ);
}
どの程度の大きをインポートしようとしているファイルですか?
どのような場合でも、最初の開始タグの後に次の行を追加してみてください:
(300)をset_time_limit;
これは、実行時間の5分(300秒)までのスクリプトを提供します。
0 300の交換は必要に応じて多くの時間を取ることができます。
こんにちは、素敵なスクリプトのおかげで。 それを実行しているとき私が手に入ります:
致命的エラーが発生:30秒の最大実行時間は63行での超過
私はこの問題を回避するに何かできることはありますか?
ロビーは、あなたのおかげでまた、それは大歓迎です。 残念なことに、それはすぐに私はそれをコピーするときには動作しません。 私は、コードは、2つの記事に散らばっているため何かが欠落していると思います。
ここに表示されるようにコードを確認するか? 何かが欠けているか?
あなたは先週よりも早くそれをダウンロードしていれば見る、'未満?'を交換すると上部にある[する<?phpを'(スペースを除く。)
私はというよりもそれに残りのブラウザでのコードだけを切断しの最初の取得します。 私はこのサイトの残りの部分が動作するため、PHPが動作している知っている。
私はphp5がその問題をしないのアップグレードですか?
)
それが悪いの配列要素の範囲内に収まるので/ /スキップ
他
$ newarray)は= str_replaceの('"',",$のlinearray [$ yを]の[$ y]は;
$ linearray = array_values($ newarray); / /新しい配列のキーをリセットする
$ xが+ +;
}
}
}
さて、ここで私の以前のコメントへの修正プログラムです:
の間に挿入し、これを:
$ linearray =($ ja項目、$ライン)爆発;
挿入するコードスニペット...下記...。
$ linemysql = Implodeは("','",$のlinearray);
検索は"StuffをもっとStuff"のすべての保持一緒にそれを内破する前に。
$ ="";
します$ b ="";
$ qoutecount = 0;
用($ x = 0の; $ xが-1){
$ qoutecount + +;
($ qoutecount == 1)場合、
$ = $ xは、/ /最初のインスタンスを格納する
elseifを($ qoutecount == 2){
$ quotecount = 0;
します$ b = $ xは/ /ストア番目のインスタンス
/ /そのしていませんが、... $に$ bに$からすべての要素をコンパイルして$の後に要素の何かを無視して新しい配列に$ bを;
$ Newaには、=""; / /新しい文字列を初期化します。
$ zは$&&$ yは、($ zは= $の
この行などの分野のアカウントはしません:
fnameは、lnameの、"当社は、株式会社"、都市、州、郵便番号
当社及び株式会社は、2つの別々の列に分割取得します。
Rengaraj、
csvファイルは、PHPファイルと同じ場所にする必要があります。
また、実際には同じcsvファイル名を使用する必要はありません。
bbqrest.csv例は、独自でこのファイル名を置き換えることです。
ことができる正しいパス(ルート)でcsvファイルbbqrest.csvを持っている私..いずれかの応答の高速
私はファイルが見つかりませんこのエラーを取得しています。 必ず、正しいパスを指定します。
それがデータベースに提出されてからcsvファイル内のヘッダーを防ぐために追加して良いでしょう。 または最初の行を取り出し、列名としてこれらの値を使用してDBを作成するスクリプトを作成することができます。
Steveさん、
あなたが変更する必要がある変数を変更した後、ウェブでアクセス可能なフォルダにこのスクリプトを配置します。 指定する必要があるかを調べるには、スクリプト内のコメントを読んでください。 次に、Webブラウザのようにスクリプトを呼び出す:
https://www.example.com/path-to-script/simplescvimport.php
トータル初心者 - (Macの場合)phpMyAdminのにExcel csvファイルをインポートしようとしている私の髪を引き裂く。 知っているのが大好きか正確な場所と私はこのphpスクリプトを使用して実行... ...?
うわーはクールだ...あなたのコーディング...多くの感謝読んだ後、考えを持っていた
こんにちは、1列目(idフィールド)で自動インクリメント値の小さな変更
$変数countを参照してください。
オーラ、エンリコ。
/ / $コン= @($ databasehost、$ databaseusername、$ databasepassword)mysql_connectまたは(はmysql_error())死ぬ;
/ / @ mysql_select_db($ databasenameは)または死ぬ(はmysql_error());
$行= 0;
$クエリ="";
$ linearray =配列();
$カウント= 0;
foreachの(ライン$として分割($ lineseparator、$ csvcontent)){
$カウント= $カウント+ 1;
$行+ +;
$行=($ライン、"\ t")がトリム;
$行= str_replaceの("'"," \'"、$ライン);
$ linearray =($ ja項目、$ライン)爆発;
$ linemysql = Implodeは("','",$のlinearray);
$クエリ="`をdbテーブルの`のVALUES('$カウント'、'$ linemysql ');";挿入
$クエリ.= $クエリを実行します。 "\ Ñ";
@するmysql_fetch_array($クエリ);
}
/ / @するmysql_close($ con)に;
おかげで多くの時間をこの保存がたくさん! ニースのスクリプトを実行します。
ケース1は、インストールされていない、私は通常、、phpmyadminのはtrueを使用する(共有ホスティングプロバイダのほとんどは同様)、これは非常に便利になることができるシェルのアクセス権を持っていない。
非常に便利な、ありがとう。