【问题标题】:Gcloud SQL Postgres import error : CREATE TABLE ERROR: syntax error at or near "AS" LINE 2: AS integer ^ Import error: exit status 3**Gcloud SQL Postgres 导入错误:CREATE TABLE ERROR:在“AS”第 2 行或附近出现语法错误:AS 整数 ^ 导入错误:退出状态 3**
【发布时间】:2019-03-29 01:20:19
【问题描述】:

问题:

将架构从 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 已安装在目标数据库中。

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

【问题讨论】:

  • 那么CREATE TABLE 看起来如何失败了?请edit你的问题(通过点击它下面的edit链接)并添加它的代码(edit你的问题不要在cmets中发布代码)
  • CREATE TABLE sample.geofences (id integer NOT NULL, geofence public.geometry(Polygon,4326),venue_id text);
  • CREATE TABLE 下的哪一行,包含单词 AS?
  • 分享一下这个解决方案怎么样?
  • 我的解决方案:基本上,我有一个来自 postgres 10.0 的数据转储文件,其中的表具有 PK 的“序列”。显然,Gcloud postgres 9.6 没有正确读取序列以及其他表数据转储到文件中的方式。那就是它给出错误“AS整数”的地方。另外,最后我确实在我之前找不到的转储文件中找到了这个快递。因此我需要过滤掉这个位。 CREATE SEQUENCE sample.geofences_id_seq AS integer

标签: sql postgresql gcloud


【解决方案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;

不确定是否有其他人遇到过这个问题,但我遇到过,而且这个解决方案对我有用,而且没有失去任何功能。

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

【讨论】:

    【解决方案2】:

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

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

    cat dump10.sql | sed -e '/AS integer/d' &gt; dump96.sql

    【讨论】:

      猜你喜欢
      • 2017-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-17
      • 2021-07-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多