我正在尝试在postgreysql或Mysql数据库中导入15GB的.sql文件。在短时间内导入如此大的数据集的更快的方法或程序是什么。
任何建议都将不胜感激?
答案 0 :(得分:3)
首先,实际上没有“.sql文件”这样的东西。这就像说一个“.dat文件”,它几乎可以是任何东西。 INSERT
的列表。用于创建表的脚本。从现有数据库中提取信息的查询。等
该文件可能包含表和索引定义(DDL)以及其他内容,或者它可能只是INSERT
语句的列表。它可以编写为使用PostgreSQL的COPY
命令等自定义供应商扩展来快速加载数据。
您需要查看该文件并查看它是什么。确定是否需要先创建表来保存数据。看看您是否需要更改任何DDL以与目标数据库兼容,因为遗憾的是,数据库供应商并未遵循SQL数据类型的标准名称,而是存在密钥生成等内容的供应商扩展。
如果将INSERT
简单地放入单个表中并且插入不相互依赖,则将其加载到PostgreSQL中的最快方法是将其拆分为多个块并使用{{1}运行每个块}。
否则你只需要psql -1 -v ON_ERROR_ROLLBACK=1 -f chunk.sql
。
将数据加载到PostgreSQL中的最快方法是使用psql -1 -v ON_ERROR_ROLLBACK=1 -f thefile.sql
,但这非常具有破坏性,我认为它不会采用预先格式化的SQL输入。下一个最佳选项是pg_bulkload
命令,但这也适用于CSV / TSV,而不是用COPY
编写的SQL格式数据。