2016-02-12 3 views
0

Можно ли импортировать текстовый файл с помощью phpmyadmin?Импортировать текстовый файл в базу данных

В файле это:

country - county/city 
USA - Florida/Orlando 
USA - Florida/Miami 
USA - Washington/Washington DC 
Switzerland - Solothurn/Grenchen 

Файл имеет более 3000 строк

Теперь я хочу, чтобы импортировать в моей КАТЕГОРИИ таблицы таблицы является так:

id | parent_id | name 

Страна и округ находятся в файле несколько раз. В моей базе данных мне это нужно только один раз. Город в файле уникален

Могу ли я сделать это с помощью phpmyadmin или это возможно только с помощью php? Может ли кто-нибудь сказать мне, как это сделать. Благодаря

+1

вы можете использовать Fread() для чтения из файла построчно и взорвать вашу строку, чтобы получить подал вам нужно для вашего дб. – Mattia

+0

Должна ли линия «США - Флорида/Орландо» выступить в 3 строках с именем «США», «Флорида» и «Орландо» или должна быть одна строка с именем «США - Флорида/Орландо»? В случае первого варианта следует установить parent_id с правильным значением (США - parent_id из Флориды, а Флорида - parent_id Орландо)? – steven

+0

нет в моей базе данных должно быть 3 строки –

ответ

0

Вот мое собственное решение

<?php 
require 'funcs/connect.php'; 

$file = 'cities.txt'; 

$file_handle = fopen($file, 'r'); 

while (!feof($file_handle)) { 

$line = fgets($file_handle); 

$text_line = explode("-",$line); 

echo $text_line[0]; 
echo $text_line[1]; 
echo $text_line[2]; 


if ($text_line[1] != "") 
     { 
      $name = $text_line[1]; 
      $stmt = $handler->prepare("SELECT name FROM news_cat WHERE name = '$name'"); 
       $stmt->execute(); 
       $count = $stmt->rowCount(); 
       if ($count >= 1) 
       { 
        echo"Kanton schon vorhanden"; 
       } 
       else 
       { 
       $stmt = $handler->prepare("INSERT INTO news_cat(name,parent_id)VALUES('$name','0')"); 
       $stmt->execute(); 
       } 
     } 

if ($text_line[2] != "") 
     { 
      $name = $text_line[2]; 
      $canton = $text_line[1]; 
      $stmt = $handler->prepare("SELECT name FROM news_cat WHERE name = '$name'"); 
       $stmt->execute(); 
       $count = $stmt->rowCount(); 
       if ($count >= 1) 
       { 
        echo"Bezirk schon vorhanden"; 
       } 
       else 
       { 
       $stmt = $handler->prepare("SELECT id FROM news_cat WHERE name = '$canton'"); 
       $stmt->execute(); 
       while($row = $stmt->fetch(PDO::FETCH_OBJ)){ 
       $parent_id = $row->id; 
       } 


       $stmt = $handler->prepare("INSERT INTO news_cat(name,parent_id)VALUES('$name','$parent_id')"); 
       $stmt->execute(); 
       } 
     } 

if ($text_line[0] != "") 
     { 
      $name = $text_line[0]; 
      $bezirk = $text_line[2]; 

       $stmt = $handler->prepare("SELECT id FROM news_cat WHERE name = '$bezirk'"); 
       $stmt->execute(); 
       while($row = $stmt->fetch(PDO::FETCH_OBJ)){ 
       $parent_id = $row->id; 
       } 


       $stmt = $handler->prepare("INSERT INTO news_cat(name,parent_id)VALUES('$name','$parent_id')"); 
       $stmt->execute(); 

     } 

echo "<br>"; 
} 

fclose($file_handle); 


?> 
1

PhpMyAdmin может помочь с этим, но вы должны будете массировать данные с другой программой, так что вы используете один и тот же разделитель (либо - или / должны быть отлично). Вы можете сделать это с помощью «поиска и замены» в любом текстовом редакторе (или в вашем любимом инструменте командной строки: sed, awk, perl и т. Д.). Просто убедитесь, что данные не содержат персонажа, который вы заменяете (например, в «Саксонии-Ангальт»).

Затем вы можете выполнить стандартный импорт с вкладки «Импорт» phpMyAdmin. Похоже, что вы хотите использовать следующие параметры:

  • столбцов, разделенные: / или - (на основании того, что вы выбрали выше)
  • Колонны приложеную: (пустая)
  • Колонны отделалась : (пусто)
  • линии завершаться: auto
+0

через несколько минут или часов мышления abaout Я имею в виду с phpmyadmin, это невозможно, потому что по состоянию и городу я должен добавить parent_id –

+0

О, поскольку это не было в вашем тексте Я предположил, что это первичный ключ с автоматическим приращением. –

+0

Рад, что вы нашли решение. –

Смежные вопросы