sql >> Database >  >> RDS >> Mysql

Hoe maak je een opgeslagen procedure in MySQL met Knex raw

Dit zou moeten helpen. Hier schreef ik een module verwacht door knex-migrate. Het zou geen moeite moeten zijn om je aan te passen aan je behoefte.

const mysql = require('mysql2');

const {
  database: {
    connection: {
      host, user, password, database, port
    }
  }
} = require('./settings.js');

exports.up = async () => {
  const script = `
    CREATE DEFINER=\`<YOUR_DB_USER>\`@\`%\` PROCEDURE \`fill_date_dimension\`(IN startdate DATE,IN stopdate DATE)
    BEGIN
        DECLARE currentdate DATE;
        SET currentdate = startdate;
        WHILE currentdate < stopdate DO
        INSERT INTO time_dimension VALUES (
                        YEAR(currentdate)*10000+MONTH(currentdate)*100 + DAY(currentdate),
                        currentdate,
                        YEAR(currentdate),
                        MONTH(currentdate),
                        DAY(currentdate),
                        QUARTER(currentdate),
                        WEEKOFYEAR(currentdate),
                        DATE_FORMAT(currentdate,'%W'),
                        DATE_FORMAT(currentdate,'%M'),
                        'f',
                        CASE DAYOFWEEK(currentdate) WHEN 1 THEN 't' WHEN 7 then 't' ELSE 'f' END,
                        NULL);
        SET currentdate = ADDDATE(currentdate,INTERVAL 1 DAY);
        END WHILE;
    END`

  const connection = mysql.createConnection({
    host,
    user,
    database,
    password,
    port
  });

  return new Promise(function (resolve, reject) {
    connection.query(
      script,
      function (err) {
        if (err) {
          return reject(err);
        }

        return resolve();
      }
    );
  });
};

exports.down = async knex => knex.raw('DROP PROCEDURE IF EXISTS fill_date_dimension');


  1. Documenten uploaden naar Azure Data Lake en gegevens exporteren met SSIS

  2. Hoe alle rijen van alle tabellen in mysql leeg te maken (in sql)

  3. Hoe draaien? Hoe converteer je meerdere rijen naar één rij met meerdere kolommen?

  4. Hoe kan ik overtollige rijen in de tabel detecteren?