За последние 24 часа нас посетили 218512 программистов и 2187 роботов. Сейчас ищут 2080 программистов ...

перенос csv в бд

Тема в разделе "PHP для новичков", создана пользователем bookin, 24 ноя 2009.

  1. bookin

    bookin Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    120
    Симпатии:
    0
    такая задачка как можно сночало создать бд, затем в это бд перенести csv файл причем по слову в каждую ячейку, тоесть есть файл csv в нем много столбцов и строк, но нужно заносить в бд не по столбцам а из каждого столбца и строки брать каждое слово которое допустим разделено пробелом и заносило это слово в отдельную яцейку
     
  2. bookin

    bookin Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    120
    Симпатии:
    0
    хоть натолкните в какую сторону думать
     
  3. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Не заниматься глупостями.

    Брать каждое слово и заносить в отдельную ячейку - это слишком абстрактно и непонятно.
    В РСУБД нет ячеек в понимании Excel и таблица в них это не разграфленый лист.

    Какая конкретно задача стоит?
     
  4. bookin

    bookin Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    120
    Симпатии:
    0
    подсчетать количество повтарений каждого слова в csv файле, сделал средствами только php выполнение скрипта занимает около часа, вот терь думаю как эт можно сделать средствами php и mysql
     
  5. bookin

    bookin Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    120
    Симпатии:
    0
    запихал по слову в яцейку(в кажестве разделителя пробел и точка с запятой) теперь другая проблема как подсчитать количество дубликатов в таблице? не удалить дубликаты а подсчитать, и вывести результаты в файл?
     
  6. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Бггг.
    Размер файла?

    Ты хочешь сказать что это у тебя работает около часа?
    PHP:
    1. <?php
    2. $maxLineWidth = 4096;
    3. $delimiter = ";";
    4. $var = array();
    5. if (($handle = fopen("test.csv", "r")) !== false) {
    6.     while (($data = fgetcsv($handle, $maxLineWidth, $delimiter)) !== false) {
    7.         $var += $data;
    8.     }
    9.     fclose($handle);
    10. }
     
  7. bookin

    bookin Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    120
    Симпатии:
    0
    да около часа, в одной ячейке csv файла не одно слово поэтому нужно разбить по ; и по пробелу патом удалить от туда знаки левые и цифры что бы остались только слова и после этого искать уже дубликаты
     
  8. bookin

    bookin Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    120
    Симпатии:
    0
    а ты привр пример подсчета повторений одной ячейки ячейки
     
  9. bookin

    bookin Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    120
    Симпатии:
    0
    все сделал приведу код может кому пригодится, он не совсем коректный но всеже работает:


    index.php :

    HTML:
    1.  
    2.   <title></title>
    3. </head>
    4.  
    5.  
    6. <cnter>
    7. <form enctype="multipart/form-data" action="export.php" method="post">
    8.  Выберите файл для обработки: <input name="userfile" type="file" />
    9.  <input type="submit" value="Обработать" />
    10. </form>
    11.  
    12.  
    13.  
    14. </body>
    15.  
    16. </html>
    export.php :



    <html>

    <head>
    <title></title>
    </head>

    <body>


    PHP:
    1. <?php
    2.  
    3. $uploadfile =basename($_FILES['userfile']['name']);
    4.  
    5. $file=$_FILES['userfile']['tmp_name'];
    6.  
    7.  
    8. function bookin($content) {
    9.   $content = strtr($content, "АБВГДЕЁЖЗИЙКЛМНОРПСТУФХЦЧШЩЪЬЫЭЮЯ",
    10. "абвгдеёжзийклмнорпстуфхцчшщъьыэюя");
    11.   return strtolower($content);
    12.   }
    13.    $conn = mysql_connect ("localhost", "root", "")
    14.         or die ("Соединение не установлено!");
    15.    echo'<div ><h2>Соединение установлено!</h2></center><br>';
    16.  
    17. $ter="create database export;";
    18. $result=mysql_query($ter);
    19. if(!$result)
    20. {
    21. echo'<div ><h2>БД "export" не создана, либо уже существует все последующие действия будут поизводится в данной БД!</h2></center><br>';
    22. }
    23. else{
    24. echo'<div ><h2>БД "export" создана!</h2></center><br>';
    25. }
    26. if(mysql_select_db("export"))
    27. {
    28.   echo '<div ><h2>к БД подключенно</h2></center><br>';
    29. }
    30. else
    31. {
    32.   echo "Ошибка подключения к  БД: ".mysql_error();
    33. }
    34.  
    35.  $qery = "DROP TABLE `export`";
    36.  $result = mysql_query($qery);
    37.  if ($qery)
    38.  
    39.      echo '<div  color="#FF0000">
    40.       <h2>Существующая таблица удалена</h2>'.'</center></div>';
    41.  
    42.  $qery2 = "CREATE TABLE `export` (`slova` TEXT NOT NULL,`CNT` TEXT NOT NULL  );";
    43.  $result = mysql_query($qery2);
    44.  if ($qery2)
    45.  
    46.      echo '<div><h2>Новая таблица добавлена</h2></center></div>';
    47.  
    48.      if(is_dir('C:\/news')!=TRUE)
    49.      {
    50.      mkdir("C:\/news");
    51.      }
    52.        $m=fopen("C:\/news/news.csv","w");
    53.  $fd = fopen($file, "r");
    54.  echo '<h3>Идет добовление данных ожидайте:</h3>';
    55.  while (($arr = fgetcsv($fd, 1024, ";")) !== FALSE) {
    56.  
    57.  foreach($arr as $v=>$c)
    58.   {
    59.  
    60.    $t=$arr[$v];
    61.    $ar=explode(" ",$t);
    62.    echo"<pre>";
    63.  
    64.    foreach($ar as $p=>$o)
    65.    {
    66.    $sql = "INSERT INTO `export` ( `slova` ) VALUES ('$ar[$p]');";
    67.    $result = mysql_query($sql);
    68.    }
    69.   }
    70.  
    71.  }
    72.  echo '<h2>ГОТОВО</h2><br>';
    73. $ret="select slova,
    74. replace(
    75. replace(
    76. replace(
    77. replace(
    78. replace(
    79. replace(
    80. replace(
    81. replace(
    82. replace(
    83. replace(
    84. replace(
    85. replace(
    86. replace(
    87. replace(
    88. replace(
    89. replace(
    90. replace(
    91. replace(
    92. replace(
    93. replace(
    94. replace(
    95. replace(
    96. replace(
    97. replace(
    98. replace(
    99. replace(
    100. replace(
    101. replace(
    102. replace(
    103. replace(
    104. replace(
    105. replace(
    106. replace(
    107. replace(
    108. slova,'1',''),'2',''),'3',''),'4',''),'5',''),'6',''),'7',''),'8',''),'9',''),'(',''),')',''),'_',''),'-',' '),'/',''),'+',''),'&',''),'=',''),'^',''),':',''),'#',''),'*',''),'®',''),'–',' '),',',''),'0',''),'.',''),'%',''),'`',''),'|',''),'@',''),' *',''),'!',''),'™',''),'||','') FROM export;";
    109.  
    110. $result=mysql_query($ret);
    111. while ($rowt = mysql_fetch_array($result,MYSQL_NUM))
    112. {
    113.     $art[]=$rowt[1];
    114. }
    115. foreach($art as $t=>$p)
    116. {
    117.  if(substr($art[$t],0,3)=="htt")
    118.   {
    119.   unset($art[$t]);
    120.   }
    121.   if(substr($art[$t],0,3)=="для")
    122.   {
    123.   unset($art[$t]);
    124.   }
    125.   if(substr($art[$t],0,3)=="до")
    126.   {
    127.   unset($art[$t]);
    128.   }
    129.   if(substr($art[$t],0,3)=="при")
    130.   {
    131.   unset($art[$t]);
    132.   }
    133.   if(substr($art[$t],0,3)=="на")
    134.   {
    135.   unset($art[$t]);
    136.   }
    137.   if(substr($art[$t],0,3)=="из")
    138.   {
    139.   unset($art[$t]);
    140.   }
    141.   if(substr($art[$t],0,3)=="по")
    142.   {
    143.   unset($art[$t]);
    144.   }if(substr($art[$t],0,3)=="to")
    145.   {
    146.   unset($art[$t]);
    147.   }
    148.   if(substr($art[$t],0,3)=="не")
    149.   {
    150.   unset($art[$t]);
    151.   }
    152.   if(substr($art[$t],0,3)=="без")
    153.   {
    154.   unset($art[$t]);
    155.   }
    156.   if(substr($art[$t],0,3)=="in")
    157.   {
    158.   unset($art[$t]);
    159.   }
    160.   if(substr($art[$t],0,3)=="со")
    161.   {
    162.   unset($art[$t]);
    163.   }
    164.   if(substr($art[$t],0,3)=="с")
    165.   {
    166.   unset($art[$t]);
    167.   }
    168.   if(substr($art[$t],0,3)=="так")
    169.   {
    170.   unset($art[$t]);
    171.   }
    172.   if(substr($art[$t],0,3)=="от")
    173.   {
    174.   unset($art[$t]);
    175.   }
    176. }
    177. foreach($art as $t=>$p)
    178. {
    179.    if(strlen($art[$t])<2)
    180.    {
    181.     unset($art[$t]);
    182.    }
    183. }
    184. foreach($art as $t=>$p)
    185. {
    186.   $erty[]=bookin($art[$t]);
    187. }
    188. foreach($erty as $k=>$v)
    189. {
    190.     if(empty($v))
    191.     {
    192.         unset($erty[$k]); //удаление пустых строк
    193.     }
    194. }
    195. $gf=array_count_values($erty);
    196.  
    197. arsort($gf);
    198. foreach($gf as $t=>$p)
    199. {
    200.     if($p<2)
    201.     {
    202.         unset($gf[$t]);
    203.     }
    204. }
    205. echo'<h3>запись в файл "С:\news\news.csv"</h3><br>';
    206. foreach($gf as $t=>$p)
    207. {
    208.  
    209.      fwrite($m,"$t".";"."$p"."\r\n"); //запись в файл $m
    210.  
    211. }
    212. echo'<h1>Все действия выполнены</h1><br>';
    213.  
    214.  
    215.  print_r($row);
    216.  
    217. fclose($fd);                // закрытие csv файла
    218. fclose($m);                // закрытие txt файла
    219.  
    220.  
    221.   ?>
    </body>

    </html>



    не против услышать критику, и может кто посоветует лучшее решение