我需要將一堆文本文件(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。 –