我做的这个查询是有效的,但它有点慢,我最后一次插入它超过 30,000 条记录,我猜我必须等待大约一两个小时。我使用的有点奇怪,这是一个进入数据库ReactJS
的前端POST
,但它正在工作,所以我对此没有任何抱怨......
但是我已经删除了该表并创建了一个新表,但是这次由于更新了一些内容,我有超过 50,000 条记录。
这就是我的表在 Supabase 中的工作方式
ID | 动漫标题 | 日本动漫剧集 | 动漫视频 | 动漫视频 |
---|---|---|---|---|
1 | 电影名 A | 第1集 | URL-movieA-1 | 无效的 |
2 | 电影名 A | 第 2 集 | URL-movieA-2 | 无效的 |
3 | 电影名 A | 第 3 集 | URL-movieA-3 | 无效的 |
4 | 电影名称 B | 第1集 | URL-电影B-1 | 无效的 |
5 | 电影名称 B | 第 2 集 | URL-电影B-2 | 无效的 |
6 | 电影名称 B | 第 3 集 | URL-电影B-3 | 无效的 |
7 | 影片名称 C | 第1集 | URL-movieC-1 | 无效的 |
8 | 影片名称 C | 第 2 集 | URL-movieC-2 | 无效的 |
9 | 影片名称 C | 第 3 集 | URL-movieC-3 | 无效的 |
所以anime_title
is 是另一个表的外键, 1anime_title
可以包含很多anime_episode
,anime_video
is null
,请不要打扰它,它用于稍后填充数据,我已经成功了。
我的问题是,如果有超过 50,000 条记录,插入将需要很长时间。但我不太熟悉如何使用数据库,所以我的方式似乎......有点“简单”。
我的代码如何运行:它选择anime_title
, anime_url
,anime_episode
以查看它是否在我的 supabase 数据库中匹配,如果这data.length === 0
意味着它在我的数据库中为空,我将继续插入它,如果不是,我将跳过它。但是数据库越大,查询进行的时间就越长。
这是我的代码:
import './index.css'
import { useEffect } from 'react'
import { supabase } from './supabaseClient'
import animeData from './data.json'
import animeDataEpisode from './dataEpisode.json'
export default function App() {
useEffect(async () => {
// POST Anime Episode Based on Anime Title
for(let i = 0; i < animeDataEpisode.length; i++){
const {data, error} = await supabase
.from('anime_detail')
.select('anime_title, anime_url, anime_episode')
.match({
anime_title: animeDataEpisode[i].animeTitle,
anime_url: animeDataEpisode[i].animeEpisodeUrl,
anime_episode: animeDataEpisode[i].animeEpisode
})
if(data.length === 0){
await supabase
.from('anime_detail')
.insert([{
anime_title: animeDataEpisode[i].animeTitle,
anime_url: animeDataEpisode[i].animeEpisodeUrl,
anime_episode: animeDataEpisode[i].animeEpisode
}])
}
else(
console.log("Record already exist, no INSERT")
)
}
},[])
return (
<div className="container">
</div>
);
}