我正在尝试在 postgreysql 或 Mysql 数据库中导入 15GB .sql 文件。在短时间内导入如此大的数据集的更快方法或程序是什么?
任何建议将不胜感激?
我正在尝试在 postgreysql 或 Mysql 数据库中导入 15GB .sql 文件。在短时间内导入如此大的数据集的更快方法或程序是什么?
任何建议将不胜感激?
首先,实际上没有“.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,而不适用于编写为INSERT
s 的 SQL 格式数据。