PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

pg_dump . के साथ तालिका को दूसरे डेटाबेस में कॉपी नहीं कर सकता

मैंने एन्कोडिंग के साथ एक डेटाबेस बनाने की कोशिश की है:UTF8 एक तालिका के साथ और दो UTF-8 एन्कोडेड वर्ण सम्मिलित करें जिन्हें COPY कमांड सम्मिलित करने का प्रयास कर रहा है और यह 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/ के अनुसार विफल कॉपी के लिए यूनिकोड कोड बिंदु हैं:

जो दो वर्ण हैं , जिसका अर्थ है कि आप उन्हें वर्ण (3) के रूप में परिभाषित कॉलम में संग्रहीत करने में सक्षम होना चाहिए, जो लंबाई में 3 वर्णों (बाइट्स नहीं) तक स्ट्रिंग्स को संग्रहीत करता है।

और अगर हम INSERT करने का प्रयास करते हैं, तो यह सफल होता है:

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

pgdump दस्तावेज़ से आप --inserts विकल्प का उपयोग करके कॉपी के बजाय INSERT कर सकते हैं

इसके बजाय चरण 1 के लिए इसका उपयोग करने का प्रयास करें:

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

मैंने एक टेबल से फाइल में कॉपी करने और आयात करने के लिए कॉपी का उपयोग करने की भी कोशिश की है और मेरे लिए यह काम करता है।

क्या आप सुनिश्चित हैं कि आपका क्लाइंट और सर्वर डेटाबेस एन्कोडिंग UTF8 है?

सबसे पहले, डेटाबेस "परीक्षण" पर स्कीमा "सार्वजनिक" से "x" नाम की तालिका को एक सादे पाठ 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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PL/pgSQL में दिए गए मानों की सूची के माध्यम से लूपिंग

  2. postgreSQL JDBC ड्राइवर लोड हो रहा है

  3. PostgreSQL में डिफ़ॉल्ट बाधा नाम क्या है?

  4. qdateEdit से उपयोगकर्ता इनपुट कैसे प्राप्त करें और इसे पोस्टग्रेज में डेटाबेस से चुनें

  5. पोस्टग्रेज स्थानीय विकास डीबी में हेरोकू प्रोडक्शन डीबी की प्रतिलिपि बनाते हैं