我需要将大量文本文件(3098)导入到数据库中。每个文件必须位于不同的表中。我的想法是使用一个循环为每个文件创建一个新的表。我是否需要在php中使用foreach来遍历所有的文件,或者只使用mysql循环,以及在LOAD DATA LOCAL INFILE .Also之后应该使用什么文件名,不知道如何创建这些表(可能会为它们的名称使用一个变量)。任何其他的想法来完成我的任务都是有帮助的。
发布于 2016-08-29 16:38:49
只需使用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;https://stackoverflow.com/questions/38914359
复制相似问题