从本地机器导入.sql文件到PostgreSQL或MySQL

15 浏览
0 Comments

从本地机器导入.sql文件到PostgreSQL或MySQL

我正在尝试导入一个15GB的.sql文件到postgreysql或Mysql数据库。有什么更快的方法或步骤可以在短时间内导入这么大的数据集吗?非常感谢任何建议!

0
0 Comments

问题出现的原因:用户想要将本地机器上的.thefile.sql文件导入到PostgreSQL或MySQL数据库中,但不知道如何指定本地机器的路径。

解决方法:在psql命令中使用-f选项,后跟thefile.sql文件的路径来指定本地机器的路径。例如,在命令中添加参数-f /Users/Foo/Desktop/thefile.sql即可指定文件在本地机器上的路径。

文章整理如下:

首先,实际上并不存在所谓的“.sql文件”。这就像说一个“.dat文件”,它可以是几乎任何东西。一个插入语句的列表。一个用于创建表的脚本。从现有数据库中提取信息的查询语句等等。

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

您需要查看文件并确定其内容。首先确定是否需要创建表来保存数据。查看是否需要更改任何DDL以与目标数据库兼容,因为不幸的是,SQL数据类型的标准名称并未受到数据库供应商的一致遵循,数据库供应商还为诸如键生成等功能提供了供应商扩展。

如果文件只是对单个表的简单插入,并且插入之间没有相互依赖关系,则将其拆分为几个块,并使用“psql -1 -v ON_ERROR_ROLLBACK=1 -f chunk.sql”运行每个块是将其加载到PostgreSQL中的最快方法。

否则,您只需使用“psql -1 -v ON_ERROR_ROLLBACK=1 -f thefile.sql”命令即可。

将数据加载到PostgreSQL中的最快方法是使用pg_bulkload,但这会带来很大的干扰,而且我不认为它能够接受预格式化的SQL输入。下一个最佳选择是使用COPY命令,但它也只适用于CSV / TSV,而不适用于以INSERT形式编写的SQL格式数据。

在命令“psql -1 -v ON_ERROR_ROLLBACK=1 -f thefile.sql”中,我该如何指定我的本地机器。例如,thefile.sql位于我的本地机器上的以下位置/Users/Foo/Desktop/thefile.sql。谢谢Ringer的问题。

解决方法:在psql命令中使用-f选项,后跟thefile.sql文件的路径来指定本地机器的路径。例如,在命令中添加参数-f /Users/Foo/Desktop/thefile.sql即可指定文件在本地机器上的路径。

0