2014-01-27 118 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; 
    } 
}