我在想什么mysqldump
或pg_dump
正在做什么。因此,他们将活动数据库转储到包含 SQL 查询的文本文件中,从而重现整个数据库。在 MySQL 和 PostgreSQL 中,这是正常的数据库转储格式。
它存在于 Oracle 上吗?怎么做到呢?
如果它不是标准的 Oracle 东西,那绝对不是问题。我需要解决这个问题。导出单个表是不够的,我要求转储整个数据库。
它是一个大型项目(具有数百万行数据库)的简化开发环境,但仍然具有数百个表和非常复杂的结构。而且,我想快速玩它。当我在玩它时,我还需要能够对其执行棘手的修改。在二进制转储上我不能这样做,在文本上我可以。
Oracle 环境中存在类似的实用程序,称为数据泵。
使用 expdp 命令行工具执行完整的数据库导出。
例子:
然后可以使用
impdp
将其导入另一个数据库。例子:
如果您指定
DUMPFILE
参数,它会写入一个名为转储文件的二进制文件。使用SQLFILE参数 (SQLFILE=/my/file/name.sql
),您可以获得 Import 将执行的所有 SQL DDL。更多取决于它的要求。
Oracle 文档在这里解释的比我所能解释的更多。
Oracle 数据泵概述
数据库本身没有这样的东西。
您可以使用数据库导出工具在 SQL Developer 中执行类似的操作。
如何使用 SQL Developer 导出数据
使用工具/数据库导出工具,您可以指定要导出的对象,然后 SQL Developer 生成用于重新创建它们的 SQL 文件,其中数据作为插入语句。
由于确切的要求是模糊的,我会发布这个:您也可以将您想要的数据写入外部表。这将为您提供(例如)CSV 格式的数据,您可以使用该格式使用另一个数据库的导入功能进行导入。
请注意,仅以 DDL/DML 语句的形式获取数据可能不足以完成我怀疑您正在尝试做的事情。如果您从一种实例类型迁移到另一种实例类型,则数据类型、长度、格式等方面存在差异,这可能会导致问题。
在某些情况下,我认为 Flyway 或 Liquebase 等工具可能对您有所帮助。似乎他们可以在 SQL、XML 和其他东西中进行转储。这个工具不是很容易使用,但看起来比 SQL Developer 灵活得多。例如,如果您需要在上传之前过滤数据。