是否可以使用phpmyadmin导入文本文件?
在文件中是这样的:
country - county / city
USA - Florida / Orlando
USA - Florida / Miami
USA - Washington / Washington DC
Switzerland - Solothurn / Grenchen
该文件有超过3000行
现在我想导入我的catergory表 表格是这样的:
id | parent_id | name
国家和县多次在档案中。在我的数据库中,我只需要它一次。 City在文件中是唯一的
我可以用phpmyadmin制作这个,还是只能用php? 任何人都可以告诉我如何做到这一点。 感谢
答案 0 :(得分:1)
phpMyAdmin可以为此提供帮助,但您必须使用其他程序按摩数据,以便使用相同的分隔符(-
或/
应该没问题)。您可以通过“搜索和替换”在任何文本编辑器(或您最喜欢的命令行工具; sed,awk,perl等)中执行此操作。只需确保您的数据不包含您要替换的字符(例如,在“Saxony-Anhalt”中)。
然后,您可以从phpMyAdmin“导入”选项卡执行标准导入。您似乎想要使用以下参数:
/
或-
分隔的列(基于您在上面选择的内容)auto
答案 1 :(得分: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);
?>