ホームページ > バックエンド開発 > PHPチュートリアル > PHPでtxtファイルを読み込んでSQLを作成し、データベースに挿入する方法

PHPでtxtファイルを読み込んでSQLを作成し、データベースに挿入する方法

WBOY
リリース: 2016-07-25 09:04:33
オリジナル
1018 人が閲覧しました
  1. /**

  2. * $splitChar フィールド区切り文字
  3. * $file データファイル ファイル名
  4. * $table データベーステーブル名
  5. * $conn データベース接続
  6. * データに対応する $fields 列名
  7. * $insertType INSERT、REPLACE を含む挿入操作タイプ
  8. * 収集と組織: bbs.it-home.org
  9. */
  10. functionloadTxtDataIntoDatabase($splitChar,$file,$table,$conn,$fields=array(),$insertType=' INSERT'){
  11. if(empty($fields)) $head = "{$insertType} INTO `{$table}` VALUES('";
  12. else $head = "{$insertType} INTO `{$table}` (`".implode('`,`',$fields)."`) VALUES('"; //データヘッダ
  13. $end = "')";
  14. $sqldata = トリム(file_get_contents($file));
  15. if(preg_replace('/s*/i','',$splitChar) == '') {
  16. $splitChar = '/(w+)(s+)/i';
  17. $replace = "$1',' ";
  18. $specialFunc = 'preg_replace';
  19. }else {
  20. $splitChar = $splitChar;
  21. $replace = "','";
  22. $specialFunc = 'str_replace';
  23. }
  24. //データ本体の処理、両方順序は変更できません。そうしないと、スペースまたはタブ区切り文字を使用するときにエラーが発生します
  25. $sqldata = preg_replace('/(s*)(n+)(s*)/i',''),('',$sqldata ); //改行を置換
  26. $sqldata = $specialFunc($splitChar,$replace,$sqldata); //区切り文字を置換
  27. $query = $head.$sqldata.$end; //データの結合
  28. if(mysql_query) ($query,$conn )) return array(true);
  29. else {
  30. return array(false,mysql_error($conn),mysql_errno($conn));
  31. }
  32. }
  33. //呼び出し例 1
  34. require 'db .php';
  35. $ SplitChar = '|'; //垂直バー
  36. $file = 'sqldata1.txt';
  37. $fields = array('id','parentid','name');
  38. $table = ' cengji';
  39. $result =loadTxtDataIntoDatabase($splitChar,$file,$table,$conn,$fields);
  40. if (array_shift($result)){
  41. echo '成功!
    ';
  42. } else {
  43. echo '失敗しました !--エラー:'.array_shift($result).'
    ';
  44. }
  45. /*sqlda ta1.txt
  46. |0|A
  47. |1|B
  48. |1 |C
  49. |2| D
  50. -- cengji
  51. CREATE TABLE `cengji` (
  52. `id` int(11) NOT NULL AUTO_INCREMENT,
  53. `parentid` int(11) NOT NULL,
  54. `name` varchar(255) DEFAULT NULL,
  55. PRIMARY KEY ( `id`),
  56. UNIQUE KEY `parentid_name_unique` (`parentid`,`name`) USING BTREE
  57. ) ENGINE=InnoDB AUTO_INCREMENT=1602 DEFAULT CHARSET=utf8
  58. */
  59. //呼び出し例 2
  60. require 'db.php' ;
  61. $splitChar = ' '; //space
  62. $file = 'sqldata2.txt';
  63. $fields = array('id','make','model','year');
  64. $table = 'cars ';
  65. $result =loadTxtDataIntoDatabase($splitChar,$file,$table,$conn,$fields);
  66. if (array_shift($result)){
  67. echo '成功!
  68. }else {
  69. echo '失敗!--エラー:'.array_shift($result).'
    ';
  70. }
  71. /* sqldata2.txt
  72. Aston DB19 2009
  73. Aston DB29 2009
  74. アストン DB39 2009
  75. -- 車
  76. CREATE TABLE `cars` (
  77. `id` int(11) NOT NULL AUTO_INCREMENT,
  78. `make` varchar(16) NOT NULL,
  79. `model` varchar(16) DEFAULT NULL,
  80. ` year` varchar(16) DEFAULT NULL,
  81. PRIMARY KEY (`id`)
  82. ) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8
  83. */
  84. //呼び出し例 3
  85. require 'db.php';
  86. $splitChar = ' '; //タブ
  87. $file = 'sqldata3.txt';
  88. $fields = array('id','make','model','year');
  89. $table = 'cars';
  90. $insertType = 'REPLACE';
  91. $result =loadTxtDataIntoDatabase($splitChar,$file,$table,$conn,$fields,$insertType);
  92. if (array_shift($result)){
  93. echo '成功!
  94. }else {
  95. echo '失敗!--エラー:'.array_shift($result).'
    ';
  96. }
  97. /* sqldata3.txt
  98. Aston DB19 2009
  99. Aston DB29 2009
  100. Aston DB39 2009
  101. */
  102. //呼び出し例 3
  103. require 'db.php';
  104. $splitChar = ' '; //Tab
  105. $file = 'sqldata3.txt';
  106. $fields = array('id', 'value');
  107. $table = 'notExist'; //テーブルが存在しません
  108. $result =loadTxtDataIntoDatabase($splitChar,$file,$table,$conn,$fields);
  109. if (array_shift($result)) {
  110. echo '成功!< ;br/>';
  111. }else {
  112. echo '失敗!--エラー:'.array_shift($result).'
    ';
  113. }
  114. / /Attachment: db.php

  115. /* //すべてを解放するにはこの行をコメント化します
  116. ?>
  117. static $connect = null;
  118. static $table = 'jilian';
  119. if(!isset($connect )) {
  120. $connect = mysql_connect("localhost","root","");
  121. if(!$connect) {
  122. $connect = mysql_connect("localhost","Zjmainstay", "");
  123. }
  124. if(!$connect) {
  125. die('データベースに接続できません。/test/db.php による致命的なエラー ハンドル');
  126. }
  127. mysql_select_db("test",$connect);
  128. mysql_query("SET NAMES utf8 ",$connect);
  129. $conn = &$connect;
  130. $db = &$connect;
  131. }
  132. ?>
コードをコピー

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

  1. //*/

  2. データテーブル構造

  3. -- データテーブル構造:
  4. -- 100000_insert ,1000000_insert
  5. CREATE TABLE `100000_insert` (
  6. `id` int(11) NOT NULL AUTO_INCREMENT,
  7. `parentid` int(11) NOT NULL,
  8. `name` varchar(255) DEFAULT NULL,
  9. PRIMARY KEY (`id` )
  10. ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
  11. 100000 (100,000) 行の挿入: 100000_line_data の使用 2.5534288883209 秒 1000000 (100 万) 行の挿入: 1000000_line_data の使用 19.6773 1 8811417 秒
  12. //考えられるエラー: MySQL サーバーが停止しました離れています
  13. //解決策: my.ini/my.cnf を変更します max_allowed_pa​​cket=20M

コードをコピー
Author: Zjmainstay


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