2012-01-30 36 views
0

ファイルを含むmysqlデータベース(主にpdf)からデータをエクスポートできるスクリプトを作成しようとしています。このデータは、システムのローカルバージョンにインポートされます。PHP MYSQL BLOBをCSV形式にエクスポート

しかし、BLOBフィールドに問題があります。PHPMYADMINを使用してエクスポートしてインポートすると問題なく動作しますが、スクリプトを使用すると、BLOBフィールドには追加のコードが追加されます。ほぼそれがプログラムに対処する方法を指示するコードであるかのように。このバージョンをPHPMYADMINにインポートしようとすると、動かない。

isはフォーマットエラーです。タイプに変換する必要がありますか。現時点では、単に行[「コンテンツ」]アイテムとしてデータベースから引き出され、次いで、任意の助けがはるか

よろしく

を理解されるであろう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のから実行されたときに出力された実際のコンテンツを進めます。.. 。

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を意味していますか? –

+0

CSVファイルメイト、それはphpmyadminの組み込み関数では機能しますが、私のスクリプトでは機能しません。だから、何とかエクスポートする前にphpmyadminがデータをフォーマットすると思いますか? – user1178223

+0

あなたのスクリプトコードは...ですか?ブロブにはどのような追加コードがありますか? –

答えて

1

バイナリBLOB(あなたの言ったように)には、カンマ、改行、引用符、およびCSVパーサーを破壊するすべての種類のものを簡単に入れることができるので、このエンコード/デコード部分が必要です。

phpmyadminを使用してファイルをインポートするには、そこで使用されているエンコーディングmachanismを複製する必要があります。オープンソースであることができて幸いです。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

関連する問題