我有一个问题,导出BLOB到一个CSV文件使用PHP。显然blob不是一个正常的字段,但它偶尔会被使用。但这里是我需要的,我需要这个脚本通过获取表格数组并以csv格式导出每一行来工作。 Blob搞砸了。我试过对blob进行base64_encode,但我相信会错误地导出blob。MySQL导出为CSV与blob字段
这是我到目前为止有:
function exportcsv($tables) {
foreach ($tables as $k => $v) {
$fh = fopen('sql/'.$v.'.csv', 'w');
$sql = mysql_query("SELECT * FROM $v");
while ($row = mysql_fetch_row($sql)) {
$line = array();
foreach ($row as $key => $v) {
$line[] = base64_encode($v);
}
fputcsv($fh, $line, chr(9)); //tab delimiting
}
fclose($fh);
}
}
任何帮助,将不胜感激。
编辑:这是blob导出没有base64_encode()的图像。 https://www.strongspace.com/shared/crypok1lxb
那么,base64会在需要重新导入时保护blob的格式吗?
不应该使用base64_decode吗?我不是BLOBS的专家,但我相信你不想编码它看到真正的文本,如果你按照我的意思.. –
你可能会显示你有输出的样本,以便我们可以看到什么是错的? –
呵呵。对不起,blob只是二进制(好的,加密的密码)。所以无论如何它对于任何类型的输出都是不可读的。但是base64_encode()的目标是让所有的fputcsv()工作,因为blob具有blob字段会损害导出的所有类型的随机字符,因为它包含\ r \ t和\ n's。所以编码可以防止这些奇怪的问题,并且确实阻止了它们。 – frustratedtech