mysql 能执行diff文件吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 能执行diff文件吗相关的知识,希望对你有一定的参考价值。

参考技术A 不能。
mysqldiff是MySQL Utilities中的一个脚本,默认的MySQL不包含这个工具集,所以需要独立安装。
mysqldiff 顾名思义就是来diff比较的,相当于Linux下的diff命令。mysqldiff 用来比较对象的定义是否相同并显示不同的地方,mysqldiff 是通过对象名称来进行比较的。

JGit 中的 git diff 等价物

【中文标题】JGit 中的 git diff 等价物【英文标题】:Equivalent of git diff in JGit 【发布时间】:2015-09-28 07:23:54 【问题描述】:

对于不属于存储库的文件 a.txt 和 b.txt,我如何获得 git diff a.txt b.txt 的结果?

我想要 git diff 提供的格式的输出。另外,由于某些限制,我无法通过 Java 运行 git 命令。

【问题讨论】:

你能提供更多关于设置的信息吗? git diff 基于 unix 程序diff,它非常适合区分不在存储库中的两个文件的要求。可能这是一个选择? 我正在运行的机器,我不能在上面运行git命令,但是如果jgit有办法做到这一点,那对我来说是可能的。 我知道您是 SO 新手。如果您认为某个答案解决了问题,请单击绿色复选标记将其标记为“已接受”。这有助于将注意力集中在仍然没有答案的旧帖子上。 【参考方案1】:

JGit 差异代码位于DiffFormatter 及其关联的类中。如果你仔细观察,你会发现代码并不是用来区分任意字节流的。它通过提交、树等与现有存储库耦合。

如果您不介意错误的文件名,可以使用以下解决方法:

1) 创建一个临时仓库

2) 使用包含 a.txt 内容的单个文件(名为 ab.txt)创建提交

3) 使用单个文件创建另一个提交 - 名称与上述文件相同 - 包含 b.txt 的内容

4) 现在您可以使用 JGit 来区分两个提交

示例代码:

File file = new File( git.getRepository().getWorkTree(), "ab.txt" );
writeFile( file, "line1\n" );
RevCommit oldCommit = commitChanges();
writeFile( file, "line1\nline2\n" );
RevCommit newCommit = commitChanges();

ObjectReader reader = git.getRepository().newObjectReader();
CanonicalTreeParser oldTreeIter = new CanonicalTreeParser();
oldTreeIter.reset( reader, oldCommit.getTree() );
CanonicalTreeParser newTreeIter = new CanonicalTreeParser();
newTreeIter.reset( reader, newCommit.getTree() );

DiffFormatter diffFormatter = new DiffFormatter( System.out );
diffFormatter.setRepository( git.getRepository() );
List<DiffEntry> entries = diffFormatter.scan( newTreeIter, oldTreeIter );
diffFormatter.format( entries );
diffFormatter.close();

private RevCommit commitChanges() throws GitAPIException 
  git.add().addFilepattern( "." ).call();
  return git.commit().setMessage( "commit message" ).call();


private static void writeFile( File file, String content ) throws IOException 
  FileOutputStream outputStream = new FileOutputStream( file );
  outputStream.write( content.getBytes( "UTF-8" ) );
  outputStream.close();

【讨论】:

以上是关于mysql 能执行diff文件吗的主要内容,如果未能解决你的问题,请参考以下文章

mysql执行完的更新语句成功还能恢复原来的数据吗

Diff算法

js能循环执行自身函数吗

git diff 与 git diff -- cached 区别

linux系统能把很多命令一起执行,然后结果输出一个文件吗?

git diff 配置 meld diff