0

我正在尝试在 postgreysql 或 Mysql 数据库中导入 15GB .sql 文件。在短时间内导入如此大的数据集的更快方法或程序是什么?

任何建议将不胜感激?

4

1 回答 1

3

首先,实际上没有“.sql 文件”之类的东西。这就像说一个“.dat 文件”,它几乎可以是任何东西。s的列表INSERT。创建表的脚本。从现有数据库中提取信息的查询。等等。

该文件可能包含表和索引定义 (DDL) 和其他内容,或者它可能只是一个INSERT语句列表。它也可以编写为使用自定义供应商扩展,如 PostgreSQL 的COPY命令来快速加载数据。

您需要查看文件并查看它是什么。确定是否需要先创建表来保存数据。看看您是否需要更改任何 DDL 以与目标数据库兼容,因为不幸的是,数据库供应商并未始终遵循 SQL 数据类型的标准名称,还有诸如密钥生成等供应商扩展。

如果它是简单INSERT的 s 到单个表中并且插入不依赖于彼此,将其加载到 PostgreSQL 中的最快方法是将其拆分为几个块并使用psql -1 -v ON_ERROR_ROLLBACK=1 -f chunk.sql.

否则你只需要psql -1 -v ON_ERROR_ROLLBACK=1 -f thefile.sql.

将数据加载到 PostgreSQL 中最快的方法是使用pg_bulkload,但这非常具有破坏性,我认为它不会采用预先格式化的 SQL 输入。下一个最佳选项是COPY命令,但它也适用于 CSV/TSV,而不适用于编写为INSERTs 的 SQL 格式数据。

于 2013-06-28T10:32:18.233 回答