如何使用 SQL 文件填充 Heroku PostgreSQL 数据库

4

首先,我想说,我不是数据库专家,也没有使用过Heroku服务的经验。

我想将一个Play框架应用程序部署到Heroku服务上。为此,我需要一个数据库。因此,我使用下面的命令创建了一个PostgreSQL数据库,因为它受到Heroku支持:

Users-MacBook-Air:~ user$ heroku addons:create heroku-postgresql -a name_of_app

我收到了这个响应

Creating heroku-postgresql on  benchmarkingsoccerclubs... free
Database has been created and is available
! This database is empty. If upgrading, you can transfer
! data from another database with pg:copy

所以现在数据库已经存在,但是当然是空的。在开发过程中,我使用了本地的H2数据库。
现在我想使用一个sql文件在heroku上填充数据库,因为数据量很大。但是我找不到如何做到这一点。是否有一个命令可以在heroku CLI中传递sql文件作为参数,并填充数据库?该文件基本上由几个被创建的表和约10000个插入命令组成。
编辑:我也有所有表格的CSV文件。所以如果有一种方法可以用这些文件填充Postgres数据库,那就太好了。
1个回答

6

首先,运行以下命令获取您的数据库名称

heroku pg:info --app <name_of_app>

查看输出结果中“Add-on”的值,应该类似于以下内容:

Add-on:                postgresql-angular-12345

然后,输入以下命令:

heroku pg:psql <Add-on> --app <name_of_app> < my_sql_file.sql

例如(假设您的SQL命令在文件test.sql中):
heroku pg:psql postgresql-angular-12345 --app my_cool_app < test.sql

是的,我做了那个。现在当我运行 SQL 文件时遇到了一些错误。每个 CREATE TABLE 或 INSERT INTO 的 ' 字符都会出现一个错误。有什么办法可以解决这个问题吗? - Stefan Roth
你可能在SQL语法方面出现了错误。如果没有看到你的文件和具体的错误信息,就无法知道是什么问题。 - Yoni Rabinovitch
不应该有任何语法错误,当然也不会太多。我之前在h2浏览器控制台中运行过这个文件,它完全正常。现在我也有了来自h2数据库的CSV文件,是否可以使用这些CSV文件填充Postgres数据库? - Stefan Roth
如果没有看到您的SQL文件和错误信息,我们无法提供真正的帮助。首先尝试传入一个非常简单的SQL文件,例如只有一个Create Table语句。一旦您成功运行了它,就可以继续处理更复杂的SQL脚本。至于如何从CSV文件中填充Postgres,请参见https://dev59.com/SnA75IYBdhLWcg3w_uqD。 - Yoni Rabinovitch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接