Gcloud SQL Postgres导入错误:创建表错误:“ AS”处或附近的语法错误第2行:AS整数^导入错误:退出状态3 **

时间:2018-10-24 14:57:46

标签: sql postgresql gcloud

问题:

将架构从AWS Postgres导入到Gcloud postgres时出现以下错误。

错误:

Import failed: 
SET 
SET 
SET 
SET 
SET set_config 
------------ 
(1 row) 
SET 
SET 
SET 
CREATE SCHEMA 
SET 
SET 
CREATE TABLE 
ERROR: syntax error at or near "AS" LINE 2: AS integer ^ 
Import error: exit status 3

我从AWS postgres导出数据时使用了--no-acl --no-owner --format=plain

pg_dump -Fc -n <schema_name> -h hostname -U user -d database --no-acl --no-owner --format=plain -f data.dump

我能够在使用相同方法导出的gcloud sql中导入某些架构,但对于某些其他相似架构却出错。表具有地理空间信息,并且postgis已安装在目标数据库中。

在这里寻找一些快速帮助。

2 个答案:

答案 0 :(得分:1)

我的解决方案:

基本上,我有一个来自postgres 10.0的数据转储文件,其表的PK具有“序列”。显然,Gcloud postgres 9.6无法正确读取序列以及其他表数据转储到文件中的方式。那就是它给出错误“ AS整数”的地方。另外,最后我确实在转储文件中找到了此快递,这是我之前找不到的。因此,我需要过滤掉此位。

创建序列sample.geofences_id_seq

AS integer  <=====had to filter out this bit to get it working
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;

不确定是否有人遇到了这个问题,但是我遇到了这个解决方案,但对我来说却没有失去任何功能。

很高兴在这里获得其他更好的解决方案。

答案 1 :(得分:0)

The original answer是正确的,并且对general case也给出了类似的答案。选项包括:

  • 将目标数据库升级到10:这取决于您在GCP中使用的内容。对于像Cloud SQL这样的托管服务,升级不是一个选择(尽管正在支持10,因此在某些情况下可以选择等待)。是,如果您正在Compute实例内部运行数据库,或者例如在App Engine中作为容器运行数据库(可以从Marketplace获得就绪实例)。
  • 在导出之前降级源。仅当您控制源安装时才可以。
  • 在上传文件之前,从文件中删除该行的所有实例。修改other responses来修改已经创建的转储文件,以下对我有用:

cat dump10.sql | sed -e '/AS integer/d' > dump96.sql