我有一个巨大的txt文件,我需要把它放在DynamoDB上。文件结构是:
223344|蓝色和橙子|红色|16/12/2022
223344|蓝色和橙子|红色|2022年12月16日
此文件超过2亿行
我曾试图使用下面的代码转换它的json文件:
import json
with open('mini_data.txt', 'r') as f_in:
for line in f_in:
line = line.strip().split('|')
filename = 'smini_final_data.json'
result = {"fild1": line[0], "field2": line[1], "field3": str(line[2]).replace(" ",""),"field4":line[3]}
with open(filename, "r") as file:
data = json.load(file)
data.append(result)
with open(filename, "w") as file:
json.dump(data, file)
但这效率不高,而且这只是工作的第一部分(将数据转换为Json),在此之后,我需要将Json放入dynamoDB。
我用过这个代码(它看起来不错):
def insert(self):
if not self.dynamodb:
self.dynamodb = boto3.resource(
'dynamodb', endpoint_url="http://localhost:8000")
table = self.dynamodb.Table('fruits')
json_file = open("final_data.json")
orange = json.load(json_file, parse_float = decimal.Decimal)
with table.batch_writer() as batch:
for fruit in orange:
fild1 = fruit['fild1']
fild2 = fruit['fild2']
fild3= fruit['fild3']
fild4 = fruit['fild4']
batch.put_item(
Item={
'fild1':fild1,
'fild2':fild2,
'fild3':fild3,
'fild4':fild4
}
)
那么,有没有人,有一些建议,以处理此文本更有效?
谢啦,谢啦
1条答案
按热度按时间k4emjkb11#
在这种情况下,将分隔文本转换为JSON的步骤似乎是不必要的。您编写它的方式需要为分隔文本文件的每一行重新打开并重写JSON文件。重复2亿次的I/O开销确实会降低速度。
我建议直接从分隔文本转到DynamoDB。它可能类似于: