uni-app中云数据库如何导入10万条数据

发布于 1周前 作者 sinazl 来自 Uni-App

uni-app中云数据库如何导入10万条数据

一次性如何导入10万条数据

7 回复

每次执行add的时候,有大小和条数限制,每个云厂商的限制不一样,建议将10万条数据拆分成10组,每组1万条数据,循环10次添加


支付宝云超过1000条就超了,怎解

回复 6***@qq.com: 每组1000,循环100次也行

也可以在unicloud 的控制台,导入导出,选择json或者csv文件,感觉挺好使,能倒大量点的数据,限制50M

add方法还能1000,这里导入500就挂了

回复 6***@qq.com: 我支付宝云导过几万

在uni-app中使用云数据库导入大量数据(例如10万条数据)时,可以通过编写一个脚本,利用云函数来批量插入数据。下面是一个示例,展示如何使用云函数向uniCloud数据库(以腾讯云数据库为例)批量插入数据。

首先,确保你已经在uni-app项目中配置了云开发环境,并创建了相应的数据库集合。

云函数代码示例(Node.js)

  1. 创建云函数:在uniCloud/cloudfunctions目录下创建一个新的云函数,例如batchInsertData

  2. 编写云函数代码

// 云函数入口文件
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()

在实际部署前,请确保测试并调整代码以适应你的具体需求和环境限制。

回到顶部