Files
SuperJump/scripts/seed-words.ts
T

34 lines
1.1 KiB
TypeScript

// xuchao: 单词词库种子——words.json 灌入 word_entry;仅表空时全量灌入,已有数据视为家长已编辑,跳过
import { sql } from "drizzle-orm";
import { drizzle } from "drizzle-orm/mysql2";
import mysql from "mysql2/promise";
import raw from "../src/content/words/words.json";
import { wordEntry } from "../src/db/schema";
async function main() {
const conn = await mysql.createConnection(process.env.DATABASE_URL!);
const db = drizzle(conn);
const [cnt] = await db.select({ n: sql<number>`COUNT(*)` }).from(wordEntry);
if (cnt.n > 0) {
console.log("word_entry 已有", cnt.n, "条,跳过灌入(视为已编辑数据)");
await conn.end();
return;
}
const rows = (raw as { word: string; meaning: string; day: number; seq: number }[]).map((w) => ({
word: w.word,
meaning: w.meaning,
day: w.day,
seq: w.seq,
}));
// 分批插入,避免单条 SQL 过大
for (let i = 0; i < rows.length; i += 500) {
await db.insert(wordEntry).values(rows.slice(i, i + 500));
}
console.log("word_entry 灌入完成:", rows.length, "条");
await conn.end();
}
main();