164 lines
5.0 KiB
JavaScript
164 lines
5.0 KiB
JavaScript
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(); |