我有一個包含大約10.000個文本文件的文件夾。我想將這些文件導入到兩列的MySQL表中。對於每一行,我希望在一列中包含文本文件的標題(例如1234.txt),並在另一列中包含文件的內容。我可以使用PHP。你會如何建議我這樣做?將多個文本文件及其標題導入到MySQL中
回答
您可以嘗試類似下面的代碼,下面的代碼將遍歷目錄中的所有文本文件,並將每個文件的文件名作爲標題和內容作爲內容添加到MySQL數據庫。
<?php
$size = "";
//Change "MyFolder" with the path and name of the directory where the .txt files are located.
$dir = "MyFolder";
if ($handle = opendir($dir)) {
while (false !== ($file = readdir($handle))) {
if($file == '.' || $file == '..') continue;
$myFile = "$dir/$file";
$fh = fopen($myFile, 'r');
$size = filesize($myFile);
if ($size > 0) {
$content = fread($fh, $size);
$title = $file;
echo $title."</br>";
}
$con=mysqli_connect("HostName","Username","Password","Database");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysqli_query($con,"INSERT INTO table_name (Title, Content) VALUES ('$title', '$content')");
mysqli_close($con);
fclose($fh);
}
closedir($handle);
}
?>
非常感謝你的答案。我只是測試它,它似乎並沒有工作。你想知道爲什麼嗎?沒有錯誤,沒有任何東西,它只是不加載表中的任何東西。包含所有文本文檔的文件夾「myfolder」與php腳本位於同一文件夾中。 – user1029296
我的不好,這是一個目錄問題。有效!非常感謝! – user1029296
沒問題,它可能不是最好的解決方案,但我希望它有幫助。 – Malcolm
你可以(AB)使用LOAD DATA INFILE
加載整個文件中的一列。該「絕招」就是提供的字符序列是不存在的文件作爲行/場終止在:
mysql> create table tbl(fname CHAR(255), data TEXT);
Query OK, 0 rows affected (0.35 sec)
mysql> LOAD DATA INFILE '/tmp/demo.txt' INTO TABLE tbl
FIELDS TERMINATED BY 'XXX' LINES TERMINATED BY 'YYY'
(data) SET fname = 'demo.csv';
Query OK, 1 row affected (0.00 sec)
Records: 1 Deleted: 0 Skipped: 0 Warnings: 0
mysql> select * from tbl;
+----------+--------------------------------------------------------------------------------------------------+
| fname | data |
+----------+--------------------------------------------------------------------------------------------------+
| demo.csv | Date, Amount, Name
2013-01-01, 1000, "Apple"
2013-01-02, 500, "Orange"
2013-01-03, 250, "Prune"
|
+----------+--------------------------------------------------------------------------------------------------+
1 rows in set (0.00 sec)
如果要加載一個文件夾中的所有文件,你將不得不調用語句從您的主機語言中的循環你甚至可以這樣做一個簡單的shell腳本:
for i in *.txt; do
echo "LOAD DATA INFILE '$i' INTO TABLE tbl
FIELDS TERMINATED BY 'XXX' LINES TERMINATED BY 'YYY'
(data) SET fname = '$i';";
done
| mysql -p -u user_name -h host_name db_name
- 1. 將文本文件導入到MySql中
- 2. 將文本文件導入到mysql
- 3. 將文本文件導入到mysql
- 4. 將多個文本文件導入Excel
- 5. 導入多個文本文件到Matlab
- 6. 將單個CSV文件導入到MySQL中的多個表中
- 7. 將多個文本文件導入到mysql數據庫中的不同表中
- 8. 將文本文件導入到mysqldb中
- 9. 導入單場文本文件到MySQL
- 10. 將文本文件導入到mysql workbench中?
- 11. 使用jquery將文本文件導入到mysql中
- 12. Ambari-將多個文件導入到Hive
- 13. 將多個.csv文件導入到R
- 14. 將多個文件導入zip文件
- 15. 通過Navicat DB軟件將文本文件導入到MySQL
- 16. 將標題添加到多個文件
- 17. 將多個csv文件從zip文件夾導入到R中
- 18. SSIS - 將多個SQL Server表導出到多個文本文件
- 19. 將文本文件導入到R
- 20. 將文本文件導入到r
- 21. 將多個文件一起導入到xampp mysql數據庫
- 22. expressjs寫入多箇中間件,並將其導入到主文件
- 23. 將列標題插入到hsqldb文本文件中
- 24. 將多個文本文件導入工作簿,其中工作表名稱與文本文件名相匹配
- 25. Python-將多個文件導入到一個.csv文件
- 26. 如何將多列從MySQL導出到文本文件
- 27. 我可以將多個文本文件導入到一個Excel表單中嗎?
- 28. 將多個文本/ csv文件導入到單個Excel工作表中
- 29. 將文本數據導入到R並刪除多餘的標題和其他不需要的文本
- 30. 將韓文本地化文本導入到xcode中的問題
一般來說,我會建議保留在文件系統中的文件,而不是在數據庫中 – Anigel
感謝您的建議。我需要用一個僅在MySQL上可用的腳本來處理文本。所以我需要找到一種方法來導入文件。 – user1029296
這裏需要一些說明。首先,你最大的文本文件的長度是多少?你需要知道這個可以選擇適當的數據類型,例如'VARCHAR(255)','TEXT','MEDIUMTEXT'等。第二,你的「腳本」如何使用這個表格?它使用「FULLTEXT」搜索嗎?它是否需要文本列上的索引?第三,你的文本是以ASCII,Latin-1,UTF-8記錄的還是什麼? –