如何避免在python/pandas中加载大型json文件时出现“数据库磁盘映像格式错误”错误?

2024-09-30 05:27:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从sqlite数据库读取一个表(大小为4GB)。表中的每个单元格都是一个json(很少有单元格中有大的json格式文件)。你知道吗

当我在db browser中执行查询时,它工作正常,但在Python中它会给出一个错误:“数据库磁盘映像格式不正确”

我尝试了不同的表格,但问题仍然存在。使用查询获取的行数约为5000。但是,每个单元格本身可能有一个长的json结构字符串(大约10000行)。你知道吗

我已经尝试过使用数据库的副本和其他数据库。我也试着跟着,在db里 Pragma完整性检查; Pragma temp_store=2;//强制数据进入RAM

这个问题似乎与Pandas/Python有关,而不是实际的DB

Python

conn = sqlite3.connect(db)
         sql = """ 
                 select a.Topic, a.Timestamp, a.SessionId, a.ContextMask, b.BuildUUID, a.BuildId, a.LayerId,
                 a.Payload
                 from MessageTable a
                 inner JOIN
                 BuildTable b
                 on a.BuildId = b.BuildId
                 where a.Topic = ('Engine/Sensors/SensorData')
                 and b.BuildUUID = :job
                 """
         cur = conn.cursor()
         cur.execute(sql, {"job" : '06c95a97-40c7-49b7-ad1b-0d439d412464'})
         sensordf = pd.DataFrame(data = cur.fetchall(), columns = ['Topic', 'Timestamp_epoch', 'SessionId', 'ContextMask'
                                 'BuildUUID', 'BuildId', 'LayerId', 'Payload'])

我希望输出在dataframe中,最后一列包含每个单元格中的json值。我可以进一步编写一些脚本,从json中进行解析,以提取更多的数据。你知道吗


Tags: 数据数据库jsondbsqltopicconntimestamp

热门问题