无法使用 pg_dump 将表复制到另一个数据库

2023-12-23

我正在尝试将表从一个数据库复制到另一个数据库(不是架构)。我在终端中使用的代码如下:

pg_dump -U postgres -t OldSchema.TableToCopy OldDatabase | psql -U postgres -d NewDatabase

当我按 Enter 时,它会请求 postgres 密码,我输入我的通行证,然后它会请求 psql 密码。我输入它并按 Enter 键。我收到很多:

invalid command \N
ERROR: relation "TableToCopy" does not exist

两个表都有UTF8编码。难道我做错了什么?
操作系统:Windows XP

错误输出:

psql:TblToCopy.sql:39236: invalid command \N
psql:TblToCopy.sql:39237: invalid command \N
psql:TblToCopy.sql:39238: invalid command \N
.
.
.

经过数百次以上错误后,终端回显:

psql:TblToCopy.sql:39245: ERROR: syntax error at or near "509"
LINE 1: 509 some gibberish words and letters here

最后:

sql:TblToCopy.sql:39245: ERROR: relation "TableToCopy" does not exist

EDIT我阅读了对同一问题的回复\N psql 错误 http://www.postgresql.org/message-id/48F901B7.2050807@gmx.de,它说使用 INSERT 而不是 COPY,但在文件 pg_dump 中创建了 COPY。如何让 pg_dump 使用 INSERT 而不是 COPY?


我用 iconv 将文件转换为 utf-8。现在该错误已经消失,但我有一个新错误。在这种特殊情况下,当我使用 psql 将数据导入数据库时​​,会发生一些新情况。表已创建但没有数据。它说:

SET
SET
SET
SET
SET
SET
SET
SET
CREATE TABLE
ALTER TABLE
psql:tblNew.sql:39610: ERROR:  value too long for type character(3)
CONTEXT:  COPY words, line 1, column first_two_letters: "سر"
ALTER TABLE
ALTER TABLE
CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE TRIGGER

我尝试使用 Encoding: UTF8 创建一个带有表的数据库,并插入 COPY 命令尝试插入的两个 UTF-8 编码字符,并且在使用 INSERT 时它可以工作。

CREATE DATABASE test
  WITH OWNER = postgres
       ENCODING = 'UTF8'
       TABLESPACE = pg_default
       LC_COLLATE = 'English_United States.1252'
       LC_CTYPE = 'English_United States.1252'
       CONNECTION LIMIT = -1;

CREATE TABLE x
(
  first_two_letters character(3)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE x
  OWNER TO postgres;

INSERT INTO x(
            first_two_letters)
    VALUES ('سر');

根据http://rishida.net/tools/conversion/ http://rishida.net/tools/conversion/对于失败的 COPY,Unicode 代码点为:

U+0633 U+0631

哪个是两个字符,这意味着您应该能够将它们存储在定义为 character(3) 的列中,该列存储长度最多为 3 个字符(不是字节)的字符串。

如果我们尝试 INSERT,它会成功:

 INSERT INTO x( 
                first_two_letters) 
        VALUES (U&'\0633\0631');

来自pg_dump 文档 http://www.postgresql.org/docs/9.3/static/app-pgdump.html您可以使用 --inserts 选项插入而不是复制

--插入 将数据转储为 INSERT 命令(而不是 COPY)。这会让恢复变得非常缓慢;它主要用于制作可以的转储 被加载到非 PostgreSQL 数据库中。然而,由于这个选项 为每一行生成一个单独的命令,重新加载行时出错 仅导致该行丢失,而不是整个表内容丢失。 请注意,如果您重新安排,恢复可能会完全失败 列顺序。 --column-inserts 选项对于列顺序是安全的 变化,尽管速度更慢。

尝试使用它来代替第 1 步:

pg_dump -U postgres -t OldSchema."TableToCopy" --inserts OldDatabase > Table.sql

我还尝试从表复制到文件并使用 COPY 导入,对我来说它有效。

您确定您的客户端和服务器数据库编码是 UTF8 吗?

首先,将名为“x”的表从数据库“test”上的模式“public”导出到纯文本 SQL 文件:

pg_dump -U postgres -t public."x" test > x.sql

它创建包含以下内容的 x.sql 文件:

--
-- PostgreSQL database dump
--
SET statement_timeout = 0;
SET lock_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SET check_function_bodies = false;
SET client_min_messages = warning;

SET search_path = public, pg_catalog;

SET default_tablespace = '';

SET default_with_oids = false;

--
-- Name: x; Type: TABLE; Schema: public; Owner: postgres; Tablespace: 
--

CREATE TABLE x (
    first_two_letters character(3)
);


ALTER TABLE public.x OWNER TO postgres;

--
-- Data for Name: x; Type: TABLE DATA; Schema: public; Owner: postgres
--

COPY x (first_two_letters) FROM stdin;
سر 
\.


--
-- PostgreSQL database dump complete
--

其次,导入:
psql -U postgres -d test -f x.sql

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法使用 pg_dump 将表复制到另一个数据库 的相关文章

  • '用户“postgres”的密码验证失败'

    我已经安装了 PostgreSQL 8 4 Postgres 客户端和 Pgadmin 3 控制台客户端和 Pgadmin 的用户 postgres 身份验证失败 我输入了用户 postgres 和密码 postgres 因为它以前有效 但
  • 如何从主机连接到 Docker Postgres 容器

    我按照以下说明搭建了一个 Rails 开发环境https docs docker com compose rails https docs docker com compose rails 它可以工作 但我无法从主机连接到 Postgres
  • JSON 值的模式匹配

    运行 Postgres 12 5 的本地 docker 实例 4MBwork mem 我正在实施这个图案 https dba stackexchange com q 108447 3684搜索 json 中的任意字段 目标是搜索并返回 JS
  • Laravel 5.3 Eloquent 事务和外键限制

    我正在从事一个更大的项目 我们在一个 Postgres 数据库中有多个模式 我们在模式之间创建了外键 这是一个例子 gt 我们有公司模式和用户模式 公司模式有company users表 该表对user users表有外键限制 CREATE
  • 按每月时间为用户标记标签

    数据源 User ID Visit Date 1 2020 01 01 12 29 15 1 2020 01 02 12 30 11 1 2020 04 01 12 31 01 2 2020 05 01 12 31 14 Problem 我
  • 如何从 postgresql 函数或触发器发送一些 http 请求

    我需要通过 http 协议 GET 或 POST 请求 从函数或触发器发送数据 是否可以 您可以尝试用 PL Python 编写触发器并使用 urllib2 进行 POST
  • Ubuntu 12.04 上的 DeepDive 安装指南

    在拥有以后很多问题 https stackoverflow com questions 22469188 deepdive installation postgresql error安装深潜项目 http deepdive stanford
  • 计算包含字母/数字的行数

    我想要实现的目标很简单 但是解释起来有点困难 我不知道在 postgres 中这是否真的可能 我处于相当基础的水平 SELECT FROM WHERE LEFT JOIN ON HAVING 等等基本的东西 我正在尝试计算包含特定字母 数字
  • PostgreSQL round(v numeric, s int)

    Which method http en wikipedia org wiki Rounding Tie breakingPostgres 吗round v numeric s int http www postgresql org doc
  • 优化 LATERAL join 中的慢速聚合

    在我的 PostgreSQL 9 6 2 数据库中 我有一个查询 该查询根据一些股票数据构建计算字段表 它为表中的每一行计算 1 到 10 年的移动平均窗口 并将其用于周期性调整 具体来说 CAPE CAPB CAPC CAPS 和 CAP
  • Postgres < 9.0 的 DO 块相当于什么

    Postgres 8 4 8 相当于什么 DO BEGIN IF NOT EXISTS THEN EXECUTE END IF END create function f returns void as BEGIN IF NOT EXIST
  • 唯一约束与唯一索引?

    之间有区别吗 CREATE TABLE p product no integer name text UNIQUE price numeric and CREATE TABLE p product no integer name text
  • Postgres:显示继承的字段

    我应该实现什么查询来获取继承的列 读过this http www alberton info postgresql meta info html综合帖子没有找到解决办法 如果我理解正确的话 您想知道作为表之间继承的一部分的列的名称 SELE
  • 最近邻居的 Postgis SQL

    我正在尝试计算最近的邻居 为此 我需要传递一个参数来限制与邻居的最大距离 例如 半径1000米内最近的邻居是哪些 我做了以下事情 我用数据创建了表 id name latitude longitude 之后 我执行了以下查询 SELECT
  • PostgreSQL:使用for循环迭代表行,根据当前行检索列值

    我有以下2张表 CREATE TABLE salesperson t salespersonid numeric 4 0 NOT NULL salespersonname character varying 25 salespersonte
  • 如何在连接到 Heroku PostgreSQL 的 Flask 应用程序上处理更多并发用户?

    Heroku 上的 Flask API 有许多端点 它们在将 json 化结果返回给客户端之前在我的 Heroku PostgreSQL 数据库上运行查询 我当前的计划是 Hobby Basic 层 因此数据库最多只能处理 20 个连接 如
  • 如何创建不返回任何内容的函数

    我想写一个函数pl pgsql 我在用着Postgres 企业管理器 v3并使用 shell 来创建一个函数 但在 shell 中我必须定义返回类型 如果我不定义返回类型 我将无法创建函数 如何创建一个不返回结果的函数 即创建一个新表的函数
  • pg_dump 与 pg_dumpall?使用哪一个来进行数据库备份?

    I tried pg dump然后在另一台机器上我尝试导入 sql 并填充数据库 我看到 CREATE TABLE ERROR role prod does not exist CREATE TABLE ERROR role prod do
  • 使用 MacPorts 在 Mac OS X 10.5 上安装 PostgreSQL 时出错

    我已经使用 MacPorts 在几台不同的计算机上安装了 PostgreSQL 没有问题 但是当涉及到我自己的笔记本电脑时 我无法构建它 当我执行此命令时 sudo port install postgresql83 我收到此错误 chec
  • PostgreSQL - 致命:用户“myuser”身份验证失败[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我刚刚在我的 Ubuntu Box 中安装了 PostGreSQL 我想做的第一件事就是创建一个数据库 我读了文档 http www postgres

随机推荐

  • 使用 ObservableCollection 进行动态数据显示

    我不知道如何使用 ObservableCollection 显示一些点 这是我的代码
  • 防止滚动改变哈希值

    对于下面丑陋的布局示例感到抱歉 http www wthdesign net test test2 html http www wthdesign net test test2 html 我设法将我的 id 名称附加到 url 中 func
  • SearchBar,如何改变文字颜色?

    我的搜索栏有默认的灰色文本 但我希望它是白色文本 我不知道如何使用 swift 来更改范围栏文本颜色 并且您无法从情节提要中做到这一点 我发现的最接近的是 searchBarOutlet setScopeBarButtonTitleText
  • 如何将页面旋转为横向且页面内容应为纵向 iTextpdf

    我正在尝试创建一个包含 2 个以上纵向页面和横向页面的 PDF 文档 我发现页面和文本都旋转为横向 我需要防止页面内容旋转 我正在使用以下代码 Document document new Document PageSize A4 36 36
  • 改造中如何处理分页

    我正在使用改造构建一个应用程序 一切都进展顺利 但我担心 API 请求的大小 并希望使用分页将它们分开 使用 Retrofit 自动分页 API 以便默认下载所有可用数据的最佳策略是什么 首先 分页需要得到您正在使用的后端服务的支持 其次
  • Git:仅部署来自 post-receive 挂钩的目录

    按照以下指示进行操作后本文 http blog brandonevans ca post 19685508893 deploying websites with git on dreamhost我有一个接收后挂钩 当前内容如下 bin sh
  • 使用Python在OpenCV中检测MultiScale的参数

    我无法理解传递给 detectorMultiScale 的参数 我知道一般语法是 detectorMultiScale image rejectLevels levelWeights 但是 参数rejectLevels和levelWeigh
  • OpenCV 中 cv::Mat 的自定义类型

    我想使用 cv Mat 和我的自定义类型创建一个数组 这是我的代码 typedef struct int x int y float prob CellXY void main cv Mat
  • 自定义标题栏 - 系统标题栏短暂显示?

    我有一个自定义布局 我想用作我的 Android 应用程序的标题栏 找到的技术 链接在底部 有效 但系统标题栏在调用 onCreate 之前显示 显然 这看起来很不和谐 因为一会儿显示了系统标题栏 然后显示了我的自定义标题栏 styles
  • 使用 Tkinter 创建游戏板

    我正在尝试构建一个简单的游戏连接四 https en wikipedia org wiki Connect Four with Python 2 7 http www python org 我创建了一个板 它由一个简单的多维 Python
  • 当浏览器处于后台时,SSE 和 Websockets 是否可以工作?

    Both SSE 服务器发送事件 http www html5rocks com en tutorials eventsource basics and 网络套接字 http www html5rocks com en tutorials
  • 是否可以在同一页面上运行两个不同版本的ReactJS?

    大家好 我想知道是否可以在同一页面上运行两个版本的 ReactJS 类似于jQuery noConflict 经过一些研究 我发现了两件有趣的事情 两种反应不会成为朋友 虽然我很高兴大家似乎在 2015 年都开始关注 NPM 并且 NPM
  • 调整目录中图像的大小

    我有一个充满图像的目录 我想将其大小调整到原始大小的 60 左右 我该怎么做呢 可以是 Python 或 Perl Cheers Eef 如果您想以编程方式执行此操作 我认为是这种情况 请使用 PIL 来调整大小 例如 newIm im r
  • 使用 Python 填充 CSV 中的空位

    我正在解析 csv 文件来创建图表 我能够毫无问题地执行此操作 除非在单个情况下 每当 csv 文件中存在空槽时 例如 科尔1 科尔2 科尔3 科尔4 科尔545 34 23 98 1866 25 018 52 56 100 文件中的第 2
  • 如何在MinGW中使用Windows API?

    如何使用视窗应用程序接口 http en wikipedia org wiki Windows API in MinGW http en wikipedia org wiki MinGW 每当我这样做的时候 我只是 include
  • 日语和中文中 unicode 代码点的不同表示

    我正在尝试显示与 unicode 0x95E8 对应的字形 该代码点基本上是 CJK 块 中文 日语 韩语 我很难知道这个特定代码点的字形表示对于日语和中文是否可能不同 当我在 JTextArea 中显示 U 95E8 时 我能够在 lin
  • 调整横向内容 UITableviewcell 的大小

    我正在 iPhone SDK 中开发一个应用程序 我想在设备处于横向模式时调整 tableviewcell 的内容大小 在我的 tableviewcell 中 我有一个同步图像和两个标签 在纵向模式下 它看起来非常漂亮 但是当我将设备转向横
  • 如何创建工作区

    我们如何在 Visual Studio Code 中创建工作区 I see File菜单命令用于打开 添加文件夹和保存工作区 但没有用于创建工作区的命令 问题如何在 Visual Studio Code 中创建工作区 https stack
  • GCP 负载均衡器后端状态未知

    我惊呆了 我有一个暂存和生产环境 两种环境具有相同的部署 服务 入口 防火墙规则 并且都服务于200 on 但是 在打开登台环境并配置相同的入口后 登台服务失败并显示Some backend services are in UNKNOWN
  • 无法使用 pg_dump 将表复制到另一个数据库

    我正在尝试将表从一个数据库复制到另一个数据库 不是架构 我在终端中使用的代码如下 pg dump U postgres t OldSchema TableToCopy OldDatabase psql U postgres d NewDat