2014-01-27 81 views
0

我正在编程一个PHP intranet,并且在从旧系统提取数据时遇到问题。它创建于SharepointMSSQL。它存储的数据非常不洁。 在HeidiSQL(db管理工具)的帮助下,我发现了所需的数据仅由关键字搜索。其全文滤波器也搜索varbinary列中,另一次转换它的VARBINARY内容有意义XML数据(我看见头+ 50个一个字母),但只有一秒钟,然后就消失回到原来的值。MySQL - 将varbinary转换为XML文件

我通过CSV导出将数据从SQLserver移动到MySQL,所以我可以使用PHP。

的VARBINARY包含此值:

0xEFBBBF2F2A205F6C6369643D223130353122205F76657273696F6E3D2231342E302E34373632220D0A5F4C6F63616C42696E64696E67202A2F0D7461626C652E6D732D646973632D6261720D7B0D206261636B67726F756E642D636F6C6F723A233539353935393B0D206261636B67726F756E642D696D6167653A75726C28717569636B6C61756E63686865616465722D44434239423136342E6769662E706E673F63746167293B0D6261636B67726F756E642D7265706561743A7265706561742D783B0D20626F726465723A31707820736F6C696420233236323632363B0D746578742D616C69676E3A6C6566743B0D7D0D7461626C652E6D732D646973632048520D7B0D6865696768743A3170783B0D20636F6C6F723A233539353935393B0D7D0D7461626C652E6D732D646973632074647B0D666F6E742D73697A653A3870743B0D666F6E742D66616D696C793A7461686F6D612C73616E732D73657269663B0D7D0D7461626C652E6D732D646973632074640D7B0D766572746963616C2D616C69676E3A746F703B0D7D0D2E6D732D6469736320617B0D20636F6C6F723A234138323230433B0D746578742D6465636F726174696F6E3A6E6F6E653B0D7D0D2E6D732D6469736320613A686F7665727B0D20636F6C6F723A233030303B0D746578742D6465636F726174696F6E3A756E6465726C696E653B0D7D0D2E6D732D6469736320613A766973697465647B0D20636F6C6F723A234445343631433B0D746578742D6465636F726174696F6E3A6E6F6E653B0D7D0D2E6D732D6469736320613A766973697465643A686F7665727B0D20636F6C6F723A233030303B0D746578742D6465636F726174696F6E3A756E6465726C696E653B0D7D0D7461626C652E6D732D646973632074640D7B0D70616464696E673A303B0D20636F6C6F723A233346334633463B0D7D0D2E6D732D646973632D6E6F7061642C7461626C652074722074642E6D732D646973632D6E6F7061642C7461626C652E6D732D646973632D6E6F7061642074640D7B0D70616464696E673A3070783B0D7D0D7461626C652074722074642E6D732D646973632D70616461626F76657B0D70616464696E673A3570782035707820357078203570783B0D7D0D7461626C652E6D732D646973632D6261722074640D7B0D766572746963616C2D616C69676E3A6D6964646C653B0D6865696768743A323270783B0D70616464696E672D6C6566743A3570783B0D7D0D7461626C652E6D732D646973632D62617220494D470D7B0D766572746963616C2D616C69676E3A6D6964646C653B0D7D0D7461626C652E6D732D646973632D62617220420D7B0D766572746963616C2D616C69676E3A3130253B0D70616464696E672D72696768743A3570783B0D7D0D74642E6D732D646973632D626F7264657265642C74642E6D732D646973632D626F7264657265642D6E6F6C6566740D7B0D20626F726465723A30707820736F6C696420233539353935393B0D626F726465722D746F702D77696474683A3070783B0D7D0D7461626C652074722074642E6D732D646973632D626F7264657265642D6E6F6C6566740D7B0D626F726465722D6C6566742D77696474683A3170783B0D70616464696E673A30707820313070782035707820313070783B0D666F6E742D66616D696C793A76657264616E613B0D666F6E742D73697A653A31656D3B0D746578742D616C69676E3A6C6566743B0D7D0D7461626C652074722074642E6D732D646973632D626F7264657265647B0D70616464696E673A3070782030707820357078203570783B0D7D0D6469762E6D732D646973632D726F6F742D626F6479206469763A66697273742D6368696C6420703A66697273742D6368696C647B0D6D617267696E2D746F703A3070783B0D7D0D 

我怎样才能将其转换回有意义的XML?我试过这些PHP函数:hexdec(),base64_encode(),base64_decode() - 但没有任何工作。

有10.000行那里...请帮助我:)预先感谢您。

+0

如果你是从SharePoint检索数据,你应该从不打的SQL数据库,使用API​​的替代。 –

+1

对不起,我没有访问Sharepoint。我只有我导入到MS SQLexpress 2008的数据库。我发现了SSMS 2008的软件SSMSBoost,它可以将varbinary可视化为文本,但仅适用于单个项目。所以我正在寻找解决方案,可以存储10000个文件,而不是手动执行。 – Gabriel

+0

我正在使用PHP 5.3并且没有hex2bin,所以我在PHP手册网站上找到了一个替代方案: if(!function_exists('hex2bin')){0}功能hex2bin($ str){ $ sbin =“”; $ len = strlen($ str);对于($ i = 0; $ i <$ len; $ i + = 2){ $ sbin。= pack(“H *”,substr($ str,$ i,2)); } return $ sbin; } } – Gabriel

回答

1

,这也非常的PHP < 5.4,感谢您的时间:

if (!function_exists('hex2bin')) { 
    function hex2bin($str) { 
     $sbin = ""; 
     $len = strlen($str); 
     for ($i = 0; $i < $len; $i += 2) { 
      $sbin .= pack("H*", substr($str, $i, 2)); 
     } 

     return $sbin; 
    } 
}