ホームページ > バックエンド開発 > PHPチュートリアル > PHP で CSV ファイルを mysql データベースにインポートおよびエクスポートする方法_PHP チュートリアル

PHP で CSV ファイルを mysql データベースにインポートおよびエクスポートする方法_PHP チュートリアル

WBOY
リリース: 2016-07-13 17:06:28
オリジナル
1355 人が閲覧しました

作業上の必要があるため、mysql のデータを csv ファイルにエクスポートし、PHP を使用して、販売者から提供された csv ファイルのデータを mysql データベースにインポートする必要があります。ここでは、インポートおよびインポートするための PHP を紹介します。 CSV ファイルを mysql データベースにエクスポートすると、プログラム コードを知る必要がある友人が参照できるようになります。


以下は簡単な例です

まず、プロジェクトに学生の情報を記録するテーブルstudentがあり、学生の名前、性別、年齢、その他の情報をそれぞれ記録するためのid、名前、性別、年齢があるとします。

コードは次のとおりです コードをコピー

テーブル「学生」を作成 (
`id` int(11) NOT NULL auto_increment、
`name` varchar(50) NOT NULL、
`sex` varchar(10) NOT NULL、
`age` smallint(3) NOT NULL デフォルト '0'、
主キー (`id`)
) エンジン=MyISAM デフォルト文字セット=utf8;

インポート フォームとエクスポート ボタンを配置するための HTML インタラクティブ ページも必要です。

コードは次のとおりですコードをコピー1.CSVインポート

インポートする CSV ファイルを選択してください:
class="btn" value="CSV をインポート">





ローカル CSV ファイルを選択した後、[インポート] をクリックして処理のために do.php?action=import に送信し、[エクスポート] ボタンをクリックしてデータ エクスポート処理のためにアドレス do.php?action=export を要求します。

do.php は、取得したパラメータに従ってインポートとエクスポートのプロセスをそれぞれ処理する必要があります。php の構造は次のとおりです。

include_once ("connect.php") //データベースに接続します

コードは次のとおりです

コードをコピー$アクション = $_GET['アクション'] //インポート処理 } elseif ($action=='export') { //CSV をエクスポート //エクスポート処理
if ($action == 'import') { //CSV をインポート
}


CSV インポート処理プロセス: CSV ファイルの正当性を確認します (この記事では無視します) -> 読み込みを開いて CSV ファイル内のフィールドを解析します -> ループして各フィールドの値を取得します -> 追加バッチでデータテーブルに追加 -> Complete 。

コードは次のとおりです
コードは次のとおりです コードをコピー

if ($action == 'import') { //CSVをインポート
$filename = $_FILES['file']['tmp_name']; If (空 ($filename)) {
echo 'インポートする CSV ファイルを選択してください! ';
出る
}
$ハンドル = fopen($ファイル名, 'r'); $result = input_csv($handle); // csv を解析します
$len_result = カウント($result); If($len_result==0){
エコー「データがありません!」 ';
出る
}
for ($i = 1; $i $name = iconv('gb2312', 'utf-8', $result[$i][0]); //中国語のトランスコーディング
$sex = iconv('gb2312', 'utf-8', $result[$i][1]); $age = $result[$i][2]; $data_values .= "('$name','$sex','$age'),"; }
$data_values = substr($data_values,0,-1) //最後のカンマを削除します
; fclose($handle) //ポインタを閉じる
$query = mysql_query("学生 (名前,性別,年齢) 値に挿入 $data_values");//データテーブルにバッチ挿入
If($クエリ){
echo 'インポートは成功しました! ';
}その他{
echo 'インポートに失敗しました! ';
}
}




PHP に付属の fgetcsv 関数は、csv を簡単に処理できることに注意してください。この関数を使用して、ファイル ポインターから行を読み取り、CSV フィールドを解析します。以下の関数は、csv ファイルのフィールドを解析し、配列として返します。

コードをコピー

関数 input_csv($handle) { $num = count($data); for ($i = 0; $i $out[$n][$i] = $data[$i]; } $n++; }tru​​e
$out = 配列 (); $n = 0; While ($data = fgetcsv($handle, 10000)) {
$out を返します。 }




さらに、データベースにインポートするときは、1つずつ挿入するのではなくバッチ挿入を使用するため、SQLステートメントを構築するときに少し処理を行う必要があります。コードを参照してください。

2.CSVをエクスポートする

csv ファイルはカンマ区切りで構成されるプレーン テキスト ファイルであり、Excel で開くことができ、その効果は xls テーブルと同じであることがわかります。

CSV エクスポートの処理プロセス: 学生情報テーブルを読み取る -> レコードをループしてカンマ区切りフィールド情報を構築 -> ヘッダー情報を設定 -> ファイルをローカルにエクスポート (ダウンロード)

コードは次のとおりです コードをコピー

...
} elseif ($action=='export') { //CSV をエクスポート
$result = mysql_query("select * from Student order by id asc"); $str = "名前、性別、年齢 n"; $str = iconv('utf-8','gb2312',$str); While($row=mysql_fetch_array($result)){
$name = iconv('utf-8','gb2312',$row['name']); //中国語のトランスコーディング
$sex = iconv('utf-8','gb2312',$row['sex']); $str .= $name.",".$sex.",".$row['age']."n" //カンマで区切る
; }
$filename = date('Ymd').'.csv' //ファイル名を設定します
; Export_csv($filename,$str); // エクスポート
}



データをローカル コンピューターにエクスポートするには、コードを次のように変更する必要があります:

コードは次のとおりです

コードをコピー関数エクスポート_csv($ファイル名,$データ) { header("コンテンツタイプ:text/csv"); header("Content-Disposition:attachment;filename=".$filename); Header('Cache-Control:must-revalidate,post-check=0,pre-check=0'); header('有効期限:0'); header('プラグマ:パブリック'); $data をエコーし​​ます。 }



インポートとエクスポートのプロセスに注意してください。統一された UTF-8 エンコーディングを使用しているため、中国語の文字が見つかった場合は必ずトランスコードする必要があります。そうしないと、中国語の文字化けが発生する可能性があります。

PHP は、CSV ファイルのインポートとエクスポートをダウンロードします: http://file.bKjia.c0m/download/2013/05/15/importCSV.rar


http://www.bkjia.com/PHPjc/630713.html

www.bkjia.com

http://www.bkjia.com/PHPjc/630713.html

技術記事

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート