Advertisement
Tarak99

load blob

Mar 13th, 2025
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.57 KB | None | 0 0
  1. import paramiko
  2. import io
  3. import zipfile
  4. import csv
  5. from azure.storage.blob import ContainerClient
  6. from azure.identity import ManagedIdentityCredential
  7.  
  8. # Define your SFTP credentials and paths
  9. sftp_host = jv_sftp_hostname
  10. sftp_port = 22
  11. sftp_username = jv_sftp_username
  12. remote_dir = "/" + jv_sftp_path + "/"
  13.  
  14. # Your private key as a string
  15. private_key_str = """-----BEGIN RSA PRIVATE KEY-----
  16. MIIJKAIBAAKCAgEArgkMQdUwH8hJBJNAKE0ZCXOXMGbLXe5d7Z35R02+Ao3YhUWM
  17. /Bu3wd8+eT+SD1jf2Lj99rAyuqX0JT0n0ijPWlZBYPIBz98m694J5PFLj/LHmUxP
  18. H3Le0/mh9E+azTzXods5u/xZDy4Gq9iEru0DdT1JLATLhutg4+rDaGwc6e1Id5u1
  19. VejVnFtVuadI3ZBLF4qVZjLSyLXo0HVe1BvfovyFbboGylwwLzEoxHwHHINl6yzV
  20. 0SrNw/NF9eQVStdY36cU5HwP/iEgWGG9ZMysd4vD0MN1CaGUVy4EDYudYgNVn3gp
  21. vn75ZnYfVS0Vdo1hoLKVF8QttF6hDyg9V5pNI7Psky9g0xzqRhesg5u6TXkiDSay
  22. w6O84GGv35+NEuZ7WCNm77oUi1FQ+WlGc4sneMM5lj9N2sy2A45dYb/XbLZc3p5+
  23. d4oXkeVhIJkxp+NnZfB3ISaPuljlJk9aMSafGSlodIsvECv0vg1btli9Zxs1FGNm
  24. ZwoYDKpvXxWEf9aXVSZl2k/Wxdo119badX8sON/Dd4+3rXbp5c5elNpoAadegEMv
  25. EKa89m5JZqF3pea5dUD/+iJ7z4Sm/djtGpyiHYFJ9Lgg5BYNdQ9XbM0n/xVSPLGT
  26. pDqh742bP+53d1VeMP7Rrzm5gl0MwCxcjxPQhYV0VTH1GMM77i0+k/+W+KkCAwEA
  27. AQKCAgBFUpNQUdQGhOgY63Kd2wADFMj/XaLaOo2tjcRy05PBPrElfOvIrF3I2tzu
  28. vRS4CkW39RAsSEkcsegLQU3wV5Mov7zxGdUA8Tl2sI4uZLMdlq5M8Ol/dGkv9Hq/
  29. b0oRQJAAB+v6Zm0vL702jFtltkEvXQcdgpdzmaSRhLzrhk0KHRtFkX9sxf74diUy
  30. e2D56HUQ3oHeIJZ3noYrKuVoBeZR7NZVO8lip9AFrEY55dGLWQeq4sQUukEWMXwH
  31. kx+sHRVomQwoawaPyrAwpFYlpaV5RPHt4T1oZbVJ+Klin99D4GIl0F6IY9mCJ8EZ
  32. U4j+HRjrQtdCjUFLXHo5KGUu1Oaujt+5GXTBaont22HTn/XxCOnUvzZn8NG4OLQo
  33. haoqZrcbCCzBvnRjsA/awTy0njvGA6lCO+LzTJZxJ0g6Jmr0KhqsDA/NGhqAk1lT
  34. aOUJYvKPtt0jYYmH2wLInWP2jk2JXbPffVkEPcqg8IIrt+OR41MKxTwsg6DPavmR
  35. TInZ7uAtxOtFKCB0uwY1k/OndYkD/h/r409nUJfbAiE83gEkgAXOrlzX112Vy4Ad
  36. 06HE1nKkckkdCqhNU8eDxAodmjMrUHBSNLl9ZEXMjzudX3bZTIBqdsBjBRpm0PB/
  37. x7byEoClvGhlvIcbPVbTqIAb3hLR4F18F8TBXsF/7SAcRXdIgQKCAQEA049qEo9U
  38. QRZmuWr+JTHpGBJ0KM/VN7/Jo3qZ0aJO5vsURpj9mG/KWGs60dZisEU2UcoAgKmX
  39. z1nWiNampbieSuD8iKUJTBk4gVIvRJ/4OsCgKbTwFLjt+RbuC3EDToMBZtp9VJ+X
  40. BNX0nepOvpF0SKuiECkTvYLBwHi/udn63GnRLiQ0fgkE0VzUqC9nW7ZFNHwfwutu
  41. 2VKFMYFRimDcsHWrPS5dPJbD7K4h4jl7ProczT0ZUkyVuDMu3Sh07K5mnIjazalB
  42. R8P3D9T/5rePwipBDW3G0YtX1R6nRVa/Ger7HPhgNfiAsH7rJ5eT2oIzXd4N9yrR
  43. GZ9m7y1HnwJ98QKCAQEA0pe+xMHG4oqur3eTMbv5f7y0yHf6xp/E8UHcsI8ufRGm
  44. UUnryNWKPMrs5a4BZAPJJEFyNtGxkCWk6MyWp5GqLJ2gQa+ksGaRCODGnGDJtwdD
  45. NTONkXjgjQHp7ci4TN2ZUmAFJWTeKYOrYv9VKlM8Wlu6PmGuREOYA99WzGGQWwQx
  46. tiFnLmQjjmdZPjWUGpxPVFqw8HObWy4ABzbEcWFAeGHjGBw8UmTAb4Yr49DAFhnG
  47. c/YxUUPFSUWONK0+E/ikX3KX7fsmhRlS9PI0TkdRfWfVcWuK7DynFYw7EJlzP6Fg
  48. m9uzNXwHkDtod3qdWpAiF0ZyzDQDRsXCFd7C5MHOOQKCAQEAx+GE51ox0Xj3vxF+
  49. YugAAbVVuEV8frqeKO2prK27/HGWW4kqeD6On/FX1m/GOCJ8StQem3EgNFD957Ve
  50. J88BB2AAWJ4M5bAiedSLQjwdzGy4Jg+EkR+T/zaR249//0q5JVMi/LP3fCMlhZmd
  51. omFMy2gVq00UEIYcxtuO0WpIoLz9XKnqSnX87k3Vwb1f2v+f7RGk9IV56qwTmY1D
  52. 3AjeGX5jNl+6yYbsP47aBqImdkJi+epTJTWkcy8whNU3e3LfEeAfUhYqzkIxB+1H
  53. hdVCZsGDSsu//7S2XG4kvddSoIspi9qDFBrgg2C2jmag098V5wbojPEQNDQtjaZr
  54. N6mkEQKCAQBQ/TLMkIlgTl1n9eCR2+zUB0qvXhT/liozblTlQetrBgKkeH1JO3Zy
  55. csgwfH7ka+BLJTA7jOFwwkltjmDSCN8dUXF0UYxQmuFkPK2lLkPlM9HRAAaNz6Ls
  56. F7RTUkIurXpth6fy/ZvC83RSGkgygthPF7/EheRzNFueAaJr74mIt1A27xmzaaeS
  57. +IQFvK08nqiTlF0/2/X/Vu2D2Lgrsm8M3PhtKU65kS3AtiTi9EErPrZnmmLVEe8p
  58. gqpx775UB+ePHY74YwIpZdfVg+BByoO4atpXSDihKaJIUynT9G+yJOn2hsOg6hYu
  59. jepbKLijP5McyGcVyVsJOLyvlH/3YeFhAoIBAEhNxnr14vp8wO0fgUj+l8aP0WxW
  60. 5QQbgxYXeGsfuJw7IQ4pQFptZQiUKzPcAHpbjkv1K6dAEXxBMp53QAkLuvu4YiNa
  61. U3niozAOELLmjp5LANRyq8yH7WtMFqVox3lJz9d+V/n0k/+qUJVrxjEPtN8m58W3
  62. OwjJ/KZZndsX+SVR+7GfNevXfJF+C3FFbtb+O4yO1UPRO5LfgZ9zYtJiEos3DuRd
  63. LFxPEyoZbJsqu35+CNzlEZJT/IPbpi13cSZ7afv7b4T9IYy+v4nFA2cy3PhWUY+2
  64. WUnDuHIoD9ndpDjsmZlooTMZw0dZ9a9m9l2Zoz6m5RYQfQhfJZu/SShsG0g=
  65. -----END RSA PRIVATE KEY-----"""
  66.  
  67. private_key_file = io.StringIO(private_key_str)
  68. private_key = paramiko.RSAKey.from_private_key(private_key_file)
  69.  
  70. # Establish transport and SFTP connection
  71. transport = paramiko.Transport((sftp_host, sftp_port))
  72. transport.connect(username=sftp_username, pkey=private_key)
  73.  
  74. sftp = paramiko.SFTPClient.from_transport(transport)
  75.  
  76. # List remote files
  77. file_list = sorted(sftp.listdir(remote_dir))
  78. print("Printing all of the zip files present: ", file_list)
  79.  
  80. blob_url = ev_blob_account_url
  81. print("Blob URL : ", blob_url)
  82.  
  83. # Create a ManagedIdentityCredential object
  84. credential = ManagedIdentityCredential()
  85.  
  86. cc = ContainerClient(account_url=blob_url, container_name=ev_edp_container_in, credential=credential)
  87.  
  88. with sftp.open(remote_dir + "BIX_Delta_CEP_Work_Interaction_Chat_Interaction_Chat_History_250301_1.zip", 'rb') as remote_file:
  89. zip_file = zipfile.ZipFile(io.BytesIO(remote_file.read()))
  90. for file_name in zip_file.namelist():
  91. if file_name.endswith('.csv') and 'manifest' not in file_name.lower():
  92. print(f"Reading file: {file_name}")
  93. with zip_file.open(file_name) as csv_file:
  94. blob_client = cc.get_blob_client("manogna_test.csv")
  95. while True:
  96. part_data = csv_file.read(1024 * 1024)
  97. if not part_data:
  98. break
  99. blob_client.upload_blob(part_data, overwrite=True, blob_type="AppendBlob")
  100. csv_file.seek(0)
  101. csv_reader = csv.reader(io.TextIOWrapper(csv_file, 'utf-8'))
  102. for row in csv_reader:
  103. print(row)
  104.  
  105. blob_data_reader = cc.get_blob_client("manogna_test.csv")
  106. blob_data = blob_data_reader.download_blob()
  107.  
  108. # Read the content of the blob (as a string)
  109. content = blob_data.readall().decode('utf-8')
  110. blobs = cc.list_blobs(name_starts_with="manogna")
  111. for blob in blobs:
  112. blob_name = blob.name
  113. print(blob_name)
  114. print(content)
  115.  
  116. sftp.close()
  117. transport.close()
  118.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement