2013-04-27 63 views
-3

我有一堆日誌純文本文件,我希望用php將它們轉換爲數據庫而不是使用純文本文件,我擁有的最大日誌文件是14MB和theres 26日誌文件。用prasing一個文本文件用php將它轉換爲SQL/mysql

我將如何去閱讀這些文本文件與PHP將其轉換爲SQL?

它們都具有相同的格式。

+3

http://php.net/manual/en/function.file.php ??? ??? – egig 2013-04-27 04:01:16

回答

0

獲取使用file_get_contents()日誌文件中的文本 - 將整個文件讀入一個字符串

$file = file_get_contents('log.txt', true); 

如果你正在使用MySQL,在MEDIUMTEXT數據類型的場店$file變量的內容。

以下是大小限制

TINYTEXT 256 bytes  
TEXT  65,535 bytes ~64kb 
MEDIUMTEXT 16,777,215 bytes ~16MB 
LONGTEXT 4,294,967,295 bytes ~4GB 
+0

日誌文件格式爲 「[2013/1/1 - 0:8:45] [BANK] First Name(IP:ipv4ip)已將9999美元轉讓給Last Name(IP:ipv4ip)」。我怎樣才能得到它只是回聲的數據,如時間戳名稱和IP的,而不是'已轉移'? – user2279125 2013-04-27 04:08:06

+0

它將以文本形式讀取並存儲在數據類型爲MEDIUMTEXT的表的列中。 – 2013-04-27 04:10:06

+1

我不建議將整個日誌文件讀入單個字符串。我將逐行循環遍歷文件,將每個條目拆分爲不同的列或字段,然後將每行插入數據庫中作爲一行。這樣,你實際上可以對你的數據做些什麼。如果你將整個日誌存儲到一個單元格中,這有什麼意義?你無法用它做任何事情。 – 2013-04-27 04:13:33

2

大部分的時間,MySQL將是足夠聰明的讀取文件格式,然後將其插入「好像」,你可以使用LOAD DATA INFILE這一點。您還可以添加「終止的字段」和「終止的行」,兩個單引號之間將使用正確的值。

LOAD DATA INFILE '/mylog_file.txt' INTO TABLE `my_db`.`my_table` FIELDS TERMINATED BY 'xxx' LINES TERMINATED BY 'xxx' (first_field, seccond_field);