首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将多个文本文件导入mysql数据库中的不同表中

问将多个文本文件导入mysql数据库中的不同表中
EN

Stack Overflow用户
提问于 2016-08-12 09:20:45
回答 1查看 1.4K关注 0票数 1

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

EN

回答 1

Stack Overflow用户

发布于 2016-08-29 16:38:49

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

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

代码语言:javascript
复制
CREATE TABLE destinationTable (
    ID int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    col1 int(11),
    col2 varchar(255),
    col3 decimal(10,2),
    col4 date,
    ...
);

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

代码语言:javascript
复制
// 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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38914359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档