fix: make CMS content live and migrate to MySQL
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
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');
|
||||
Reference in New Issue
Block a user