gpt4 book ai didi

python - 表存储SDK

转载 作者:太空宇宙 更新时间:2023-11-03 14:05:35 25 4
gpt4 key购买 nike

我正在尝试使用 Python 将一些数据从 CSV 文件逐行加载到 Azure 表存储中。字符串列被直接插入,但源中提到的格式为 2018-02-18T11:29:12.000Z 的日期列仍作为字符串加载。这意味着我无法使用日期列查询记录。

有人可以告诉我是否有办法为表创建实体定义(列的数据类型)并使用它来加载记录以避免使用字符串类型加载日期?

最佳答案

我尝试重现您的问题,但失败了。我将 csv 文件加载到 Azure 表存储,并将数据列加载为 DataTime 类型。

您可以引用我的代码如下:

我的 csv 文件:

'tasksSeattle','001','jay1',100,2018-02-18T11:29:12.000Z
'tasksSeattle','002','jay2',100,2018-02-18T11:29:12.000Z
'tasksSeattle','003','jay3',100,2018-02-18T11:29:12.000Z
'tasksSeattle','004','jay4',100,2018-02-18T11:29:12.000Z
'tasksSeattle','005','jay5',100,2018-02-18T11:29:12.000Z

我的Python代码:

from azure.cosmosdb.table.tableservice import TableService
from azure.cosmosdb.table.models import Entity
import csv
import sys
import codecs

table_service = TableService(connection_string='***')

reload(sys)
sys.setdefaultencoding('utf-8')
filename = "E:/jay.csv"

with codecs.open(filename, 'rb', encoding="utf-8") as f_input:
csv_reader = csv.reader(f_input)
for row in csv_reader:
task = Entity()
task.PartitionKey = row[0]
task.RowKey = row[1]
task.description = row[2]
task.priority = row[3]
task.logtime = row[4]
table_service.insert_entity('tasktable', task)

加载结果:

enter image description here

希望对您有帮助。

<小时/>

更新答案:

如果您观察上面屏幕截图中的数据类型选项框,不难发现表服务数据模型仅支持这 8 种类型:

  • Edm.Binary
  • Edm.Boolean
  • Edm.DateTime
  • Edm.Double
  • Edm.Guid
  • Edm.Int32
  • Edm.Int64
  • Edm.String

您可以使用提到的 entity.x = EntityProperty(EdmType.STRING, 'y') 函数 here根据需要定义数据类型。

请引用我的示例代码如下:

with codecs.open(filename, 'rb', encoding="utf-8") as f_input:
csv_reader = csv.reader(f_input)
for row in csv_reader:
task = Entity()
task.PartitionKey = row[0]
task.RowKey = row[1]
task.description = row[2]
task.priority = EntityProperty(EdmType.INT32, row[3])
task.logtime = EntityProperty(EdmType.DATETIME, row[4])

table_service.insert_entity('tasktable', task)

仅供总结:

我们可以将字符串转换为日期时间并获取日期片段,如下所示:

task.startDateTime = datetime(startDateFrag.year,startDateFrag.month,startDateFrag.day,startDateFrag.hour,startDateFrag.min,startDateFrag.second)

关于python - 表存储SDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48919195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com