【问题标题】:Importing multiple text files into different tables in mysql database将多个文本文件导入mysql数据库中的不同表
【发布时间】:2016-12-19 06:07:19
【问题描述】:

我需要将一堆文本文件 (3098) 导入数据库。每个文件必须在不同的表中。我的想法是使用一个循环为每个文件创建一个新表。我是否必须在 php 中使用foreach 来遍历所有文件或只是 mysql 循环以及我应该在LOAD DATA LOCAL INFILE 之后放置什么文件名。我还想知道如何创建这些表(也许为他们使用一个变量名称)。完成我的任务的任何其他想法都会有所帮助。

【问题讨论】:

  • LOAD DATA LOCAL INFILE 之后输入要导入的文件的名称。你还想取什么名字?? :-) 还有Also wondering how could i create theese folders - 什么文件夹?在这句话之前你没有提到任何文件夹。
  • P.S.您可能完全可以使用 MySQL 编写此代码,但我怀疑 PHP 可能会使它变得更容易
  • @ADyson 我的意思是表格而不是文件夹:D.
  • 但问题是我有 3098 个不同的文件名。我如何能够遍历所有这些。文件名相同,除了它们包含的日期和时间。但他们没有任何特殊的订单。所以我正在考虑一种方法以某种方式遍历包含所有文件的文件夹。 @ADyson
  • 您真的想要 3,098 张桌子吗?如果都是相同的结构,为什么不使用一个带有标识字段的大表?

标签: php mysql loops import load-data-infile


【解决方案1】:

只需使用 php 的 glob() 遍历所有 .txt 文件,然后在每个文件上运行 MySQL 的 LOAD DATA INFILE 命令。但首先,在 MySQL 中创建具有适当数据类型列的目标表。然后在 PHP 中运行导入代码。如上所述,此方法假定所有 .txt 文件都具有相同的结构以全部导入到 one 数据库表中。

MYSQL (在控制台或代码中一次性运行)

CREATE TABLE destinationTable (
    ID int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    col1 int(11),
    col2 varchar(255),
    col3 decimal(10,2),
    col4 date,
    ...
);

PHP (使用迭代循环;以下假设以逗号分隔的文件,调整为实际分隔符)

// OPEN DATABASE CONNECTION
$dbh = new PDO("mysql:host=$host;dbname=$database",$username,$password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

foreach (glob("/path/to/folder/*.txt") as $file) {

    $sql = "LOAD DATA INFILE '".$file."' 
            INTO TABLE destinationTable 
            FIELDS TERMINATED BY ',' 
            OPTIONALLY ENCLOSED BY '\"' 
            LINES TERMINATED BY '\r\n';";

    $dbh->query($sql);

}

// CLOSE CONNECTION
$dbh = null;

【讨论】:

  • 这看起来不错,但我在连接 php 和 mysql 时遇到问题。我在我的域中运行 php,但只有我可以连接的数据库是 phpMyAdmin 中的相应数据库。问题是 phpMyAdmin 不支持 LOAD DATA INFILE 。所以如果你知道如何连接我的 XAMPP 服务器.....@Parfait
  • Phpmyadmin 只是 MySQL 服务器的 GUI 控制台。您的 MySQL 设置没有启用 LOAD DATA INFILE。见this。此外,您可以在终端/命令行中运行上述 PHP 脚本(无需浏览器、apache、服务器等),就像其他开源语言 - Perl、Python、R 等一样。
猜你喜欢
  • 1970-01-01
  • 2016-01-23
  • 2012-11-14
  • 1970-01-01
  • 1970-01-01
  • 2012-01-22
  • 2011-12-16
  • 2023-01-08
相关资源
最近更新 更多