0
我使用Azure工具AzCopy從表存儲導出數據,修改導出的數據,然後將數據導入到另一個表存儲表中。我使用下面的命令導出:AzCopy忽略或重新創建校驗和
AzCopy /Source:https://MYSERVER/MYTABLE/ /SourceKey:SOURCEKEY /Dest:C:\migration /Manifest:MYTABLE
由於無法爲出口增加一個過濾器,我過濾後數據導出,刪除JSON數據是必要的。然後我用下面的命令將這些數據導入到另一臺服務器:
AzCopy/Source:C:\export /Dest:https://MYOTHERSERVER/MYTABLE /DestType:Table /DestKey:DESTKEY /Manifest:MYTABLE EntityOperation:InsertOrReplace
這些操作正常工作時我不操縱JSON文件。但是,當我這樣做時,文件的內容當然會發生更改,並且清單文件中的校驗和不再匹配。當我去做導入時,我收到一個「文件已損壞」的消息。
這裏是清單文件看起來像:
"Version":2,"PayloadFormat":"Json","Checksum":5500917691400439101,"AccountName":"SERVER","TableName":"MYTABLE","Timestamp":"2017-08-25T14:10:53.7489755Z","SplitSize":0,"TotalDataFiles":1}
我怎樣才能得到AzCopy要麼無法驗證校驗或更換校驗?
我試過下面的代碼重新校驗,但是當我在原來的JSON做的,它不匹配:
var md5Hash = getFileHash(file);
var checksum = convertHash(md5Hash);
private byte[] getFileHash(string filePath)
{
using (var md5 = MD5.Create())
{
using (var stream = File.OpenRead(filePath))
{
return md5.ComputeHash(stream);
}
}
}
private string convertHash(byte[] data)
{
var algorithm = MD5.Create();
var result = BitConverter.ToUInt64(data,0);
return result.ToString();
}
這將返回4500814390503865422
。
鑑於這是如何創建校驗和,是否可以重新創建? – im1dermike
我很抱歉地說現在還沒有一種簡單的方法可以這麼做。 –
但是,如果你只有一個導出的數據文件(這正是你的情況,每個清單文件內容由你共享),新的Crc64校驗和可以很容易地通過一些散列工具來計算(例如DP Hash https://www.portablefreeware.com /?ID = 1757)。之後,您可以用新的Crc64校驗和替換數據文件名稱和清單文件內容。 –