gpt4 book ai didi

ios - 插入大约 10000 个数据大约需要 60 - 70 秒。我需要提交交易吗?

转载 作者:行者123 更新时间:2023-11-28 07:49:56 25 4
gpt4 key购买 nike

我正在尝试将大约 10000 条数据插入到我的数据库中。检查下面的函数代码。插入所有数据大约需要一分钟。现在我已经在事务中添加了 block ,但是我需要提交它还是它自动管理。我如何在下面的代码中编写它?

func insertDataToDB(objects: [DataModel]) {
removeAllData()
createSchemaForData()
print("Start Inserting Connectors \(Date())")
let stmt = try? db.prepare("INSERT INTO product (connectorId, deviceId, current, status, cost, voltage, power, type, method, mode) VALUES (?,?,?,?,?,?,?,?,?,?)")
do {
try db.transaction {
for product in objects {
try stmt?.run(product.connectorId!, product.deviceId!, product.current, product.status, product.cost, product.voltage, product.power, product.type!, product.method!, product.mode)
}
}
} catch {
print("Failed Inserting connectors: \(error.localizedDescription)")
}
print("End Inserting Connectors \(Date())")
}

removeAllData() 将在插入之前从数据库中删除所有数据。

createSchemaForData() 将根据需要创建模式。

struct product {
static let table = Table("product")
static let connectorId = Expression<String>("connectorId")
static let deviceId = Expression<String>("deviceId")
static let current = Expression<Double?>("current")
static let status = Expression<String?>("status")
static let cost = Expression<Double?>("cost")
static let voltage = Expression<Double?>("voltage")
static let power = Expression<Double?>("power")
static let type = Expression<String?>("type")
static let method = Expression<String?>("method")
static let mode = Expression<String?>("mode")
}

最佳答案

上面的代码没有问题,但我做错的是我创建的单例类。

我正在使用如下所示的连接,每次访问 db 对象时都会给我新的连接。

var db: Connection {
let dbPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first!
return try! Connection("\(dbPath)/\(dbName)")
}

所以根据 Rob 的要点代码改进了代码。所以现在插入数据的时间连一秒都不到。

let db: Connection = {
let path = NSSearchPathForDirectoriesInDomains(
.documentDirectory, .userDomainMask, true
).first!
return try! Connection("\(path)/EVDataBase.sqlite")
}()

让我知道上面的代码是否还有改进之处。或者,如果任何人都可以分享他们的单例或经理类(class),那也会有所帮助。

关于ios - 插入大约 10000 个数据大约需要 60 - 70 秒。我需要提交交易吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49973766/

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