7 回复
每次执行add的时候,有大小和条数限制,每个云厂商的限制不一样,建议将10万条数据拆分成10组,每组1万条数据,循环10次添加
支付宝云超过1000条就超了,怎解
也可以在unicloud 的控制台,导入导出,选择json或者csv文件,感觉挺好使,能倒大量点的数据,限制50M
add方法还能1000,这里导入500就挂了
回复 6***@qq.com: 我支付宝云导过几万
在uni-app中使用云数据库导入大量数据(例如10万条数据)时,可以通过编写一个脚本,利用云函数来批量插入数据。下面是一个示例,展示如何使用云函数向uniCloud数据库(以腾讯云数据库为例)批量插入数据。
首先,确保你已经在uni-app项目中配置了云开发环境,并创建了相应的数据库集合。
云函数代码示例(Node.js)
-
创建云函数:在uniCloud/cloudfunctions目录下创建一个新的云函数,例如
batchInsertData
。 -
编写云函数代码:
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
const _ = db.command
exports.main = async (event, context) => {
const dataArray = [] // 这里应该是你要插入的10万条数据,为了简化示例,这里假设已经准备好
// 示例数据生成(实际使用时,应从文件或其他来源读取数据)
for (let i = 0; i < 100000; i++) {
dataArray.push({
_id: i.toString(), // 确保_id唯一,或让数据库自动生成
name: `Name${i}`,
age: Math.floor(Math.random() * 100),
// 其他字段...
})
}
try {
// 批量插入数据(这里简单处理,实际情况可能需要分批插入以避免超时)
const result = await db.collection('your_collection_name').add(dataArray)
return {
success: true,
result
}
} catch (error) {
console.error(error)
return {
success: false,
error
}
}
}
注意:在实际操作中,由于云函数执行时间和内存限制,一次性插入10万条数据可能会导致超时或内存溢出。因此,建议将数据分批插入,例如每次插入1000条,循环执行直到所有数据插入完成。
分批插入示例
为了简化示例,这里仅展示分批插入的逻辑框架:
const batchSize = 1000
const totalData = dataArray.length
let start = 0
async function batchInsert() {
while (start < totalData) {
const end = Math.min(start + batchSize, totalData)
const batchData = dataArray.slice(start, end)
try {
await db.collection('your_collection_name').add(batchData)
start = end
} catch (error) {
console.error(`Batch ${Math.floor(start / batchSize)} failed:`, error)
// 根据需要处理错误,例如重试机制
}
}
return { success: true }
}
batchInsert()
在实际部署前,请确保测试并调整代码以适应你的具体需求和环境限制。