import mysql from 'mysql2/promise'; import fs from 'fs'; import 'dotenv/config'; const input = process.env.SQLITE_EXPORT_PATH || './sqlite-export.json'; const data = JSON.parse(fs.readFileSync(input, 'utf8')); const connection = await mysql.createConnection({ host: process.env.DB_HOST || '127.0.0.1', port: Number(process.env.DB_PORT || 33306), user: process.env.DB_USER || 'admin', password: process.env.DB_PASSWORD || '', database: process.env.DB_NAME || 'ameiba_cms', charset: 'utf8mb4' }); for (const [table, rows] of Object.entries(data)) { for (const row of rows) { const columns = Object.keys(row); const escaped = columns.map(c => `\`${c}\``).join(','); const values = columns.map(() => '?').join(','); const updates = columns.filter(c => c !== 'id').map(c => `\`${c}\`=VALUES(\`${c}\`)`).join(','); await connection.query(`INSERT INTO \`${table}\` (${escaped}) VALUES (${values}) ON DUPLICATE KEY UPDATE ${updates || '`id`=VALUES(`id`)'}`, columns.map(c => row[c])); } console.log(`${table}: ${(rows || []).length} rows`); } await connection.end(); console.log('MySQL import complete');