2012-01-30 119 views
0

我想創建一個腳本,可以從包含文件的MySQL數據庫(主要是pdf)導出數據。然後將這些數據導入系統的本地版本。PHP的MYSQL BLOB導出爲CSV格式

但是,我使用PHPMYADMIN導出和導入時遇到了BLOB字段的問題,但是使用我的腳本時,BLOB字段已將其他代碼添加到頂部。幾乎就像是指導程序如何處理它的代碼一樣。當我嘗試將此版本導入PHPMYADMIN時,它不起作用。

是格式錯誤,我是否需要將其轉換爲類型。目前它被簡單地從數據庫中抽取作爲行[「內容」]項,然後輸出到CSV

任何幫助將不勝感激

問候

///////當導出使用該腳本以下跑到我的腳本

$file = 'supportingFiles'; // csv name. 
$result = mysql_query("SHOW COLUMNS FROM files"); 
$a = 0; 

if (mysql_num_rows($result) > 0) {          //print column titles based on number of columns in the two files 
while ($row = mysql_fetch_assoc($result)) { 
$a++; 
} 
} 

$values = mysql_query("SELECT * FROM files ");   //select client details wehere required 

while ($rows = mysql_fetch_array($values)) {          //print client information 
for ($k=0;$k<$a;$k++) { 

$csv_output .= $rows[$k].","; 
} 
$csv_output .= "\n";   //end of line 
} 

$filename = $file."_".date("d-m-Y_H-i",time()); 

header("Content-type: application/csv"); 
header("Content-disposition: csv" . date("Y-m-d") . ".csv"); 
header("Content-disposition: filename=supportingFiles.csv"); 

echo $csv_output;   //output data file 

的//////////源代碼進行時表的CSV出口從phpMyAdmin的運行輸出的實際內容.. 。

%âãÏÓ 
%%ISIS AfpToPdf-V.6.2/h3 '2008-05-19 (build:6.20.0.08205)' 
4 0 obj 
[ 
/DeviceRGB 
] 
endobj 
5 0 obj 
[/Pattern 4 0 R] 
endobj 
6 0 obj 
[ 
/DeviceCMYK 
] 
endobj 
7 0 obj 
[/Pattern 6 0 R] 
endobj 
14 0 obj 
<</Length 1221/Filter/FlateDecode>> 
stream 
xÚ•WÛnã6ýÿümÌ%)’¢úo6Š6Û„ûTÈckW–RYÎ6ýüh‡CJ¶Ûi€\à™áp.gÇ‹|Æ!ÿ6{wÃ[email protected]~‚ãçgø3Í %ph×3ü^ïÿæ[P2cB‚É4Käw? 
R<¦èØo-\ïðs³_oüqŽ.yL11°Ø·uåžà}ÕìÜTûáÏüã-\-ó©.ÿ„ÅŸ^þ!Ÿý=óõ‘YÆRƒ=±ÌÀ¬Á$´îÊ」)•TÉ ±6a¶×JŸúXËY¦ÇJµÖ²äìQ«/]k&ÍyÇœyV›¦gµši{^›0c†¨\c-jÏÆlì!ªÚQ! Íä^#YrÁóQ™_juÊ5x¶「˜µaâÂYÉôùZ)ëQÛk³ÉY•2~>_¥Ž1×{þ4[ä’ŒÉÅv2<¾ÿâ{Œ_ïªr…ŒžÂð©©„9øú™FFÄZÄ«ª†1Ö  ŒÎ’58Tj˜â‡$áb¯D`²H‡¾ 
üí</m›ºÛ|¿ƒÕ¦h×n²ã¯—ˆøQc¿¼Ç‰ãvûå·ê k<ÙyJ+¦ 
"2¦75^‚Ó ãg&x M„ñ4–êØå wÈ°\äå%BÄËØŒ4쉷è÷çßASÃsb¢ñ(¾t_bO¼Gî…›7]Qõe„û¦=ªo:9ø| Ö」3¾2õØéPü74–š 2qÔYle%Ûn‹ö š{xjö-«U³¯»·5Wáhz‹ª¨Wˆ¿¶ÙÂCëËf¿ƒeœ¥ Ÿ」Ã\{IÆðE 9i=î… ð3ŠŠß‹§­«;DõÊ•îî¸ 4ñþYöóÓÎ^¯<ÁeN$…ö±öG ¥§÷kÔå」^]¥Xò2¼cˆ}\>¢LdQÅSA7=6RN¾‘¥B— dXêjë[w{z¿Uâ‡WIÈxVÊK¥`ܬpЗֈx—þ! U¦¨¿ús ½%ÁBŒœãÃ%؃ï¤ïž«p†ËzMÁaÞ6Ê»†" 
iç\lMÏ>ÈL®v‘€šû8ê:Ú<kwh 
‰h¶l#ì†ý"ô·+ÊjÇN½ü§7\2¥éû=0å‹¡¾ô½&±HW´ƒ„J^…–ǯ"? 
+0

你的意思是CVS或csv? – 2012-01-30 14:17:12

+0

CSV文件隊友,它與phpmyadmin中的內置函數合作,但不是我的腳本,所以我想在輸出之前phpmyadmin格式化數據? – user1178223 2012-01-30 14:26:49

+0

而你的腳本代碼是...? blob還有哪些其他代碼? – 2012-01-30 14:28:43

回答

1

那是因爲CSV沒有很好地標準化爲格式(未連「逗號」,如「逗號分隔值」)這是因爲phpmyadmin的做了一些編碼/導出/導入當解碼上的值。

您需要這個編碼/解碼部分,因爲您的二進制BLOB(如您所說,主要是PDF)可以很容易地包含逗號,換行符,引號和各種破解CSV解析器的內容。

要使用phpmyadmin導入你的文件,你必須複製那裏使用的編碼機制 - 幸運的是它是開源的,你可以have a look at the code。如果你想要自己的導出/導入機制(可以這樣說:你可以編寫你自己的導入器,以匹配你的導出器),那麼你可以在這裏使用base64編碼,以確保你的CSV(它的目的是作爲一個普通的-text格式)正確存儲二進制數據。

出口:

// convert binary blob to text format 
$plaintextdata_for_csv = base64_encode($binarydata_from_blob); 

進口商:

// decode text format to binary blob 
$binarydata_for_blob = base64_decode($plaintextdata_from_csv); 
+0

感謝你們,現在開始縮小這個問題的範圍。 我現在已經發現,在PHPMYADMIN中,如果我選擇視圖爲純文本選項,而不是實際將值導入csv,則結果與我的代碼中生成的文件完全相同。 任何快速的想法,以節省我打獵幾個小時?謝謝 – user1178223 2012-01-30 15:15:54