Purpose:
The purpose of this post is to
demonstrate how we can read a CSV file from Azure File Share in X++.
Application: Dynamics
365 Finance and Operations
Prerequisites:
· Azure
file storage account must be configured in Azure Portal
· File
shares must be configured under this Azure file storage account
· Access
permissions must be configured for this Azure file storage account
Disclaimer:
This post is only for sharing
knowledge. Do not use this code as is in a Production environment.
Business requirement:
Read a CSV file from Azure file share.
Solution:
Please find the code below to read a
CSV file from Azure File Share. The code reads ABN numbers from a CSV file. The
file has only a single column of ABN numbers with a single number per line.
Code
using Microsoft.Azure;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
using Microsoft.WindowsAzure.Storage.File;
class MyCloudStorageFileManager
{
#File
#define.delimiterField(',')
public static void main(Args _args)
{
#OCCRetryCount
System.IO.MemoryStream memoryStream;
System.String storageAccountName;
System.String keyValue;
CloudStorageAccount storageAccount;
CloudFileClient fileClient;
CloudFileShare fileShare;
CloudFileDirectory fileDirectoryRoot;
CloudFileDirectory fileDirectory;
CloudFile file;
TextStreamIo textStreamIo;
VendTable vendTable;
VATNum vendABN;
Counter counter;
container rec;
storageAccountName = "AzureStorageAccountName";
keyValue = "KeyValueString";
var storageCredentials = new Microsoft.WindowsAzure.Storage.Auth.StorageCredentials(storageAccountName, keyValue);
storageAccount = new Microsoft.WindowsAzure.Storage.CloudStorageAccount(storageCredentials, true);
fileClient = storageAccount.CreateCloudFileClient();
fileShare = fileClient.GetShareReference('AzureFileShareName');
if (fileShare.Exists(null, null))
{
fileDirectoryRoot = fileShare.GetRootDirectoryReference();
fileDirectory = fileDirectoryRoot.GetDirectoryReference("Folder/Subfolder");
if (fileDirectory.Exists(null, null))
{
file = fileDirectory.GetFileReference('File.csv');
if (file.Exists(null, null))
{
memoryStream = new System.IO.MemoryStream();
file.DownloadToStream(memoryStream, null, null, null);
textStreamIo = TextStreamIo::constructForRead(memoryStream);
try
{
if (textStreamIo)
{
if (textStreamIo.status())
{
throw Global::error("@SYS52680");
}
textStreamIo.inFieldDelimiter(#delimiterField);
textStreamIo.inRecordDelimiter(#delimiterCRLF);
counter = 0;
while (!textStreamIo.status())
{
rec = textStreamIo.read();
if (conLen(rec))
{
vendABN = conPeek(rec, 1);
info(strFmt("%1", vendABN));
}
}
}
}
catch (Exception::Error)
{
error("An error occured. Please contact your system administrator.");
}
}
}
}
}
}
We can use Microsoft Azure Storage Explorer to browse files stored in Azure File Share or Azure Blob Containers.
No comments:
Post a Comment