mysql - 如何从 sql 文件运行 typeorm mysql 命令?
问题描述
我想在从 sql 文件迁移时运行 mysql 命令。有人可以帮助我,如何解决?
import {MigrationInterface, QueryRunner} from "typeorm";
import * as fs from "fs";
var queries = fs.readFileSync(__dirname + '/geoinfo.sql').toString()
.replace(/(\r\n|\n|\r)/gm," ") // remove newlines
.replace(/\s+/g, ' '); // excess white space
export class HungarianStatesAndCities1564393283405 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query(queries.toString() );
}
public async down(queryRunner: QueryRunner): Promise<any> {
await queryRunner.query("");
}
}
解决方案
您可以使用“;”的拆分查询 并运行单个查询
const readSqlFile = (filepath: string): string[] => {
return fs
.readFileSync(path.join(__dirname, filepath))
.toString()
.replace(/\r?\n|\r/g, '')
.split(';')
.filter((query) => query?.length);
};
public async up(queryRunner: QueryRunner): Promise<void> {
const queries = readSqlFile('/geoinfo.sql');
for (let i = 0; i < queries.length; i++) {
await queryRunner.query(queries[i]);
}
}
推荐阅读
- java - Discord Bot 的命令处理
- wpf - 领域在部署的 WPF/Windows10 应用程序中失败,领域包装器.dll 未找到错误
- python - 如何对两个列表进行相同的排序?
- mongodb - 我有两个文档,我们如何创建查找来获得结果?
- c# - 如何使用 Linq Outlook C# 从商店中的所有文件夹中搜索电子邮件
- node.js - 如何使用带有 api 的 REST url 创建容器?
- ios - 点击时 UITextField 没有响应?
- .htaccess - 怎么写 '?' htaccess 中的符号
- unity3d - Unity InvalidOperationException:StandardIn 尚未重定向
- ios - WKWebView 不播放音频