const { sequelize } = require('./config/database-simple'); const { Farm } = require('./models'); /** * 导入farms静态数据到数据库 * 包含API路由中的静态数据和种子文件中的详细数据 */ async function importFarmsStaticData() { try { console.log('开始导入farms静态数据到数据库...'); // 检查当前farms表状态 const existingFarms = await Farm.findAll(); console.log(`当前farms表中有 ${existingFarms.length} 条记录`); // API路由中的静态数据 const apiStaticData = [ { id: 1, name: '宁夏农场1', location: '银川市' }, { id: 2, name: '宁夏农场2', location: '石嘴山市' }, { id: 3, name: '宁夏农场3', location: '吴忠市' } ]; // 种子文件中的详细数据 const seedData = [ { name: '阳光农场', type: '养猪场', location: JSON.stringify({ lat: 39.9042, lng: 116.4074 }), address: '北京市朝阳区农场路1号', contact: '张三', phone: '13800138001', status: 'active' }, { name: '绿野牧场', type: '养牛场', location: JSON.stringify({ lat: 31.2304, lng: 121.4737 }), address: '上海市浦东新区牧场路2号', contact: '李四', phone: '13800138002', status: 'active' }, { name: '山谷羊场', type: '养羊场', location: JSON.stringify({ lat: 23.1291, lng: 113.2644 }), address: '广州市天河区山谷路3号', contact: '王五', phone: '13800138003', status: 'active' }, { name: '蓝天养鸡场', type: '养鸡场', location: JSON.stringify({ lat: 30.2741, lng: 120.1551 }), address: '杭州市西湖区蓝天路4号', contact: '赵六', phone: '13800138004', status: 'active' }, { name: '金山养鸭场', type: '养鸭场', location: JSON.stringify({ lat: 36.0611, lng: 103.8343 }), address: '兰州市城关区金山路5号', contact: '孙七', phone: '13800138005', status: 'active' }, { name: '银河渔场', type: '渔场', location: JSON.stringify({ lat: 29.5647, lng: 106.5507 }), address: '重庆市渝中区银河路6号', contact: '周八', phone: '13800138006', status: 'active' }, { name: '星空牧场', type: '综合养殖场', location: JSON.stringify({ lat: 34.3416, lng: 108.9398 }), address: '西安市雁塔区星空路7号', contact: '吴九', phone: '13800138007', status: 'active' }, { name: '彩虹农庄', type: '有机农场', location: JSON.stringify({ lat: 25.0478, lng: 102.7123 }), address: '昆明市五华区彩虹路8号', contact: '郑十', phone: '13800138008', status: 'active' } ]; // 合并API静态数据和种子数据 const allFarmsData = []; // 首先添加API静态数据(转换为完整格式) for (const apiData of apiStaticData) { allFarmsData.push({ name: apiData.name, type: '综合农场', // 默认类型 location: JSON.stringify({ lat: 38.4872, lng: 106.2309 }), // 宁夏地区坐标 address: `宁夏回族自治区${apiData.location}`, contact: '管理员', phone: '400-000-0000', status: 'active' }); } // 然后添加种子数据 allFarmsData.push(...seedData); console.log(`准备导入 ${allFarmsData.length} 条farms数据`); // 开始事务 const transaction = await sequelize.transaction(); try { // 清空现有数据 await Farm.destroy({ where: {}, transaction }); console.log('已清空现有farms数据'); // 重置自增ID await sequelize.query('ALTER TABLE farms AUTO_INCREMENT = 1', { transaction }); console.log('已重置farms表自增ID'); // 批量插入新数据 const createdFarms = await Farm.bulkCreate(allFarmsData, { transaction }); console.log(`成功插入 ${createdFarms.length} 条farms数据`); // 提交事务 await transaction.commit(); // 验证导入结果 const finalFarms = await Farm.findAll({ order: [['id', 'ASC']] }); console.log('\n导入后的farms数据:'); finalFarms.forEach(farm => { console.log(`ID: ${farm.id}, Name: ${farm.name}, Type: ${farm.type}, Location: ${farm.address}`); }); console.log(`\n✅ 成功导入 ${finalFarms.length} 条farms静态数据到数据库`); } catch (error) { // 回滚事务 await transaction.rollback(); throw error; } } catch (error) { console.error('❌ 导入farms静态数据失败:', error.message); console.error('错误详情:', error); } finally { // 关闭数据库连接 await sequelize.close(); } } // 执行导入 importFarmsStaticData();