I want to create new table countries with default rows. I am using sequelize with pg and I am wondering if there is a way to check if a table already exists if not execute a sql file. Also, I made a sequelize model country, and maybe there is a hook to bulk all data after creating a table?
            Asked
            
        
        
            Active
            
        
            Viewed 458 times
        
    1 Answers
1
            
            
        You can check if a table exists by executing a query from information_schema, see this answer.
To bulk load data use the same migration file and place all data as a script in sql-file, read it and execute it there:
'use strict'
const fs = require('fs')
const path = require('path')
const sqlUp = fs.readFileSync(path.join(__dirname, '../scripts/bulk-insert-data.sql'), { encoding: 'utf8' })
module.exports = {
  up: async (queryInterface, Sequelize) => {
    await queryInterface.sequelize.transaction(async transaction => {
      await queryInterface.createTable('table', {
       // here are column definitions
      }, { transaction })
      await queryInterface.sequelize.query(sqlUp, { type: queryInterface.sequelize.QueryTypes.RAW, transaction })
    })
  },
  down: async (queryInterface, Sequelize) => {
    await queryInterface.dropTable('table')
  }
}
 
    
    
        Anatoly
        
- 20,799
- 3
- 28
- 42
