我需要将一堆文本文件(3098)导入到数据库中。每个文件必须位于不同的表格中。我的想法是使用一个循环为每个文件创建一个新表。我是否必须在php中使用foreach
来查看所有文件或者mysql循环,以及我应该在LOAD DATA LOCAL INFILE
后面输入什么文件名。还想知道如何创建这些表(可能使用变量来表示它们的名称)。任何其他想法来完成我的任务将是有益的。将多个文本文件导入到mysql数据库中的不同表中
回答
只需使用php的glob()
遍历所有.txt文件,然后在每个文件上运行MySQL的LOAD DATA INFILE
命令。但首先,在MySQL中用适当的数据类型列创建目标表。然后在PHP中运行导入代码。如上所述,这种方法假定所有.txt文件具有相同的结构,全部导入到一个数据库表中。
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只是一个GUI服务器的控制台。你的MySQL设置没有启用'LOAD DATA INFILE'。参见[this](http://stackoverflow.com/questions/10762239/mysql-enable-load-data-local-infile)。此外,您可以在终端/命令行(不需要浏览器,apache,服务器等)上运行PHP脚本,就像其他开源语言--Perl,Python,R等一样。 – Parfait
- 1. Winforms - 将多个文本文件导入同一个数据表
- 2. 将单个CSV文件导入到MySQL中的多个表中
- 3. 将多个文件一起导入到xampp mysql数据库
- 4. 将文本文件导入到MySql中
- 5. 将多个文本文件及其标题导入到MySQL中
- 6. 将文本文件导入到mySQL中不知道表数据类型
- 7. 如何导入从文本文件数据到MySQL数据库
- 8. 将文本文件导入数据库
- 9. 在PHP中将CSV文件导入到Mysql数据库中
- 10. 将大文本文件导入到SQL Server数据库中
- 11. 将文本文件导入到SQL数据库中
- 12. 将CSV文件导入MySQL数据库
- 13. 将XML文件中的数据导入MySQL数据库
- 14. 导入txt文件到MySQL数据库
- 15. 将.db文件导入到MySql数据库中
- 16. 如何将excel文件导入到MySQL数据库中
- 17. 将文本文件导入MySQL数据库错误
- 18. 将MySql数据库导出到文件
- 19. 如何将文本文件中的数据导入到Excel中?
- 20. 将文本文件导入Windows 7中的Access数据库
- 21. 根据不同表中的列将表导出到csv到多个文件
- 22. 将数据导入csv文件到mysql
- 23. 使用PHP将多个文本文件导入数据库表格单元格
- 24. 将数据从文本文件导入到MySQL中的特定列中
- 25. 将CSV文件数据导入到MySQL表中
- 26. 如何将数据从csv文件导入到mysql表中?
- 27. SnappyData将多个csv文件中的数据导入到列表或行表中
- 28. 将文本文件导入到mysql
- 29. 将文本文件导入到mysql
- 30. 使用CSLA将数据从文本文件导入到SQL数据库中
'LOAD DATA LOCAL INFILE'后面您放置了您要导入的文件的名称。你会放什么其他名字? :-)另外'也想知道我怎么可以创建这些文件夹 - 什么文件夹?您在该评论前没有提及任何文件夹。 – ADyson
P.S.你可以完全使用MySQL来编写它,但我怀疑PHP可能使它更容易 – ADyson
@ADyson我的意思是表格不是文件夹:D。 –