// 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`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();