CSV फ़ाइल डेटा को PostgreSQL तालिका में कैसे आयात करें?


601

मैं एक संग्रहीत प्रक्रिया कैसे लिख सकता हूं जो CSV फ़ाइल से डेटा आयात करती है और तालिका को पॉप्युलेट करती है?


18
एक संग्रहीत प्रक्रिया क्यों? COPY चाल है
फ्रैंक Heikens

1
मेरे पास एक यूजर इंटरफेस है जो सीएसवी फ़ाइल अपलोड करता है, इसे हुक करने के लिए मुझे संग्रहीत प्रक्रिया की आवश्यकता होती है जो वास्तव में
सीवीएस

3
क्या आप COPY का उपयोग करने के बारे में विस्तार से बता सकते हैं?
वर्धन

17
Bozhidar Batsov ने आपको पहले ही एक उदाहरण के लिए एक लिंक दिया था, ठीक मैनुअल भी मदद कर सकता है: postgresql.org/docs/8.4/interactive/sql-copy.html
फ्रैंक हाइकेन

5
वर्तमान मैनुअल: postgresql.org/docs/current/static/sql-copy.html
तुलसी Bourque

जवाबों:


774

इस छोटे लेख पर एक नज़र डालें ।


समाधान यहाँ paraphrased:

अपनी तालिका बनाएँ:

CREATE TABLE zip_codes 
(ZIP char(5), LATITUDE double precision, LONGITUDE double precision, 
CITY varchar, STATE char(2), COUNTY varchar, ZIP_CLASS varchar);

अपनी CSV फ़ाइल से तालिका में डेटा कॉपी करें:

COPY zip_codes FROM '/path/to/csv/ZIP_CODES.txt' WITH (FORMAT csv);

46
यदि सुपर उपयोगकर्ता की पहुंच नहीं है, तो वास्तव में \ copy का उपयोग एक ही चाल में किया जाएगा; गैर-रूट खाते के साथ COPY का उपयोग करते समय यह मेरे फेडोरा 16 पर शिकायत करता है।
Asksw0rder

81
TIP: आप इंगित कर सकते हैं कि zip_codes (col1, col2, col3) का उपयोग करके CSV में आपके पास कौन से कॉलम हैं। कॉलम को उसी क्रम में सूचीबद्ध किया जाना चाहिए जो वे फ़ाइल में दिखाई देते हैं।
डेविड पेलाज़

6
@ asksw0rder does \ copy में एक ही वाक्यविन्यास है? bcoz मैं \ के साथ एक सिंटैक्स त्रुटि हो रही है नकल
JhovaniC

6
क्या मुझे हेडर पंक्ति शामिल करनी चाहिए?
bernie2436

116
आप हेडर पंक्ति को आसानी से शामिल कर सकते हैं - विकल्पों में केवल हेडर जोड़ें: COPY zip_codes FROM '/path/to/csv/ZIP_CODES.txt' DELIMITER ',' CSV HEADER; postgresql.org/docs/9.1/static/sql-copy.html
Barrett Clark

219

यदि आपके पास उपयोग करने की अनुमति नहीं है COPY(जो db सर्वर पर काम करता है), तो आप \copyइसके बजाय उपयोग कर सकते हैं (जो db क्लाइंट में काम करता है)। Bozhidar Batsov के समान उदाहरण का उपयोग करना:

अपनी तालिका बनाएँ:

CREATE TABLE zip_codes 
(ZIP char(5), LATITUDE double precision, LONGITUDE double precision, 
CITY varchar, STATE char(2), COUNTY varchar, ZIP_CLASS varchar);

अपनी CSV फ़ाइल से तालिका में डेटा कॉपी करें:

\copy zip_codes FROM '/path/to/csv/ZIP_CODES.txt' DELIMITER ',' CSV

आप पढ़ने के लिए कॉलम भी निर्दिष्ट कर सकते हैं:

\copy zip_codes(ZIP,CITY,STATE) FROM '/path/to/csv/ZIP_CODES.txt' DELIMITER ',' CSV

COPY के लिए दस्तावेज देखें :

साइक अनुदेश \ कॉपी के साथ कॉपी को भ्रमित न करें। \ copy STDIN से COPY को कॉपी करता है या STDOUT को कॉपी करता है, और फिर psql क्लाइंट के लिए सुलभ फ़ाइल में डेटा संग्रहीत / संग्रहीत करता है। इस प्रकार, फ़ाइल की पहुँच और पहुँच अधिकार क्लाइंट पर निर्भर करते हैं न कि सर्वर पर जब \ copy का उपयोग किया जाता है।

और ध्यान दें:

पहचान स्तंभों के लिए, COPY FROM कमांड हमेशा इनपुट डेटा में प्रदान किए गए कॉलम मानों को लिखेगा, जैसे INSERT विकल्प OVERRIDING SYSTEM VALUE।


\ copy वोटर (ज़िप, CITY) FROM '/Users/files/Downloads/WOOD.TXT' DELIMITER ',' CSV HEADER; त्रुटि: अंतिम अपेक्षित कॉलम के बाद अतिरिक्त डेटा: COPY मतदाता, पंक्ति 2: "OH0012781511,87,26953, HOUSEHOLDER, SHERRY, LEIGH ,, 11/26 / 1965,08 (19/1988), 211 N GARFIELD ST, BLOOMD ... "
JZ।

@JZ। मेरी भी ऐसी ही त्रुटि थी। ऐसा इसलिए था क्योंकि मेरे पास अतिरिक्त खाली कॉलम थे। अपने सीएसवी की जांच करें और यदि आपके पास खाली कॉलम हैं, तो इसका कारण हो सकता है।
एलेक्स बेनेट

5
यह कुछ हद तक भ्रामक है: के बीच का अंतर COPYऔर \copyभी बहुत कुछ बस अनुमतियों से है, और आप बस एक `` इसे बनाने के लिए जादुई काम नहीं जोड़ सकते। विवरण (निर्यात के संदर्भ में) यहां देखें: stackoverflow.com/a/1517692/157957
IMSoP

@IMSoP: आप सही कह रहे हैं, मैंने स्पष्ट करने के लिए सर्वर और क्लाइंट का उल्लेख जोड़ा
bjelli

@bjelli प्रतिलिपि की तुलना में \ copy धीमा है? मेरे पास RDS पर एक 1.5MB फ़ाइल और db.m4.large इंस्टेंस है और यह घंटों हो गए हैं कि यह कॉपी कमांड (कम से कम 3) चल रहा है।
सेबस्टियन

79

ऐसा करने का एक त्वरित तरीका पायथन पांडा लाइब्रेरी (संस्करण 0.15 या इसके बाद के संस्करण सबसे अच्छा है) के साथ है। यह आपके लिए कॉलम बनाने में काम करेगा - हालाँकि स्पष्ट रूप से यह डेटा प्रकारों के लिए जो विकल्प बनाता है वह वह नहीं हो सकता है जैसा आप चाहते हैं। यदि यह ऐसा नहीं करता है जो आप चाहते हैं तो आप हमेशा टेम्पलेट के रूप में उत्पन्न 'तालिका बनाएँ' कोड का उपयोग कर सकते हैं।

यहाँ एक सरल उदाहरण दिया गया है:

import pandas as pd
df = pd.read_csv('mypath.csv')
df.columns = [c.lower() for c in df.columns] #postgres doesn't like capitals or spaces

from sqlalchemy import create_engine
engine = create_engine('postgresql://username:password@localhost:5432/dbname')

df.to_sql("my_table_name", engine)

और यहाँ कुछ कोड है जो आपको दिखाता है कि विभिन्न विकल्प कैसे सेट करें:

# Set it so the raw sql output is logged
import logging
logging.basicConfig()
logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO)

df.to_sql("my_table_name2", 
          engine, 
          if_exists="append",  #options are ‘fail’, ‘replace’, ‘append’, default ‘fail’
          index=False, #Do not output the index of the dataframe
          dtype={'col1': sqlalchemy.types.NUMERIC,
                 'col2': sqlalchemy.types.String}) #Datatypes should be [sqlalchemy types][1]

6
इसके अलावा, if_existsपैरामीटर को मौजूदा तालिका में बदलने या जोड़ने के लिए सेट किया जा सकता है, जैसेdf.to_sql("fhrs", engine, if_exists='replace')
joelostblom

1
उपयोगकर्ता नाम और पासवर्ड: लॉगिन बनाने और उपयोगकर्ता को DB असाइन करने की आवश्यकता है। यदि pgAdmin का उपयोग करता है, तो GUI का उपयोग करके "लॉगिन / समूह भूमिका" बनाएँ
सोमनाथ कदम

9
पंडाल sql (बनाम सीएसवी फाइलों) को लोड करने का एक सुपर स्लो तरीका है। परिमाण धीमे के आदेश हो सकते हैं।
user48956

यह डेटा लिखने का एक तरीका हो सकता है लेकिन यह बैच और अच्छी कंप्यूटिंग शक्ति के साथ भी सुपर स्लो है। इसे पूरा करने के लिए CSV का उपयोग करना एक अच्छा तरीका है।
अंकित सिंह

df.to_sql()वास्तव में धीमा है, आप d6tstackd6tstack.utils.pd_to_psql() से प्रदर्शन तुलना देख सकते हैं
citynorman

30

आप pgAdmin का उपयोग भी कर सकते हैं, जो आयात करने के लिए GUI प्रदान करता है। यह इस SO थ्रेड में दिखाया गया है । PgAdmin का उपयोग करने का लाभ यह है कि यह दूरस्थ डेटाबेस के लिए भी काम करता है।

हालांकि पिछले समाधानों की तरह, आपको डेटाबेस पर अपनी तालिका पहले से ही रखनी होगी। प्रत्येक व्यक्ति का अपना समाधान होता है, लेकिन मैं आमतौर पर एक्सेल में CSV खोलता हूं, हेडर की प्रतिलिपि बनाता हूं, विशेष वर्कशीट पर ट्रांसपोजेशन के साथ विशेष पेस्ट करता हूं, इसी डेटा टाइप को अगले कॉलम पर रखता हूं, बस कॉपी करता हूं और टेक्स्ट एडिटर पर पेस्ट करता हूं उपयुक्त SQL तालिका निर्माण क्वेरी के साथ एक साथ:

CREATE TABLE my_table (
    /*paste data from Excel here for example ... */
    col_1 bigint,
    col_2 bigint,
    /* ... */
    col_n bigint 
)

1
pls अपने पेस्ट किए गए डेटा के नमूने पंक्तियों के एक जोड़े को दिखाते हैं
dcorking

29

यहां अधिकांश अन्य समाधानों के लिए आवश्यक है कि आप पहले से / मैन्युअल रूप से तालिका बनाएं। यह कुछ मामलों में व्यावहारिक नहीं हो सकता है (जैसे, यदि आपके पास गंतव्य तालिका में बहुत सारे कॉलम हैं)। तो, नीचे का दृष्टिकोण काम आ सकता है।

अपनी सीएसवी फ़ाइल का पथ और स्तंभ गणना प्रदान करते हुए, आप अपनी तालिका को एक अस्थायी तालिका में लोड करने के लिए निम्न फ़ंक्शन का उपयोग कर सकते हैं जिसे निम्न नाम दिया जाएगा target_table:

शीर्ष पंक्ति को स्तंभ नामों के लिए माना जाता है।

create or replace function data.load_csv_file
(
    target_table text,
    csv_path text,
    col_count integer
)

returns void as $$

declare

iter integer; -- dummy integer to iterate columns with
col text; -- variable to keep the column name at each iteration
col_first text; -- first column name, e.g., top left corner on a csv file or spreadsheet

begin
    create table temp_table ();

    -- add just enough number of columns
    for iter in 1..col_count
    loop
        execute format('alter table temp_table add column col_%s text;', iter);
    end loop;

    -- copy the data from csv file
    execute format('copy temp_table from %L with delimiter '','' quote ''"'' csv ', csv_path);

    iter := 1;
    col_first := (select col_1 from temp_table limit 1);

    -- update the column names based on the first row which has the column names
    for col in execute format('select unnest(string_to_array(trim(temp_table::text, ''()''), '','')) from temp_table where col_1 = %L', col_first)
    loop
        execute format('alter table temp_table rename column col_%s to %s', iter, col);
        iter := iter + 1;
    end loop;

    -- delete the columns row
    execute format('delete from temp_table where %s = %L', col_first, col_first);

    -- change the temp table name to the name given as parameter, if not blank
    if length(target_table) > 0 then
        execute format('alter table temp_table rename to %I', target_table);
    end if;

end;

$$ language plpgsql;

1
हाय Mehmet, आपके द्वारा पोस्ट किए गए उत्तर के लिए धन्यवाद, लेकिन जब मैं आपका कोड चलाता हूं तो मुझे निम्न त्रुटि संदेश मिलता है: ERROR: स्कीमा "डेटा" मौजूद नहीं है
user2867432

user2867432 आपको स्कीमा नाम बदलने की जरूरत है जिसे आप तदनुसार उपयोग करते हैं (जैसे, public)
mehmet

हाय Mehmet, समाधान के लिए धन्यवाद, यह एकदम सही है, लेकिन यह केवल तभी काम करता है जब पोस्टब्रिज DB उपयोगकर्ता सुपरयूज़र है, क्या यह किसी भी तरह से सुपरयूज़र के बिना काम करने का तरीका है?
गीमे

Geeme: यहां "सुरक्षा निश्चित" पढ़ें , लेकिन मैंने खुद इसका उपयोग नहीं किया है।
mehmet

सुंदर जवाब! मैं अपने कोड में दूसरों के लिए पठनीयता के लिए बहुत सामान्य नहीं जा रहा हूँ।
मनोहर रेड्डी पोरडे

19

जैसा कि पॉल ने उल्लेख किया है, आयात pgAdmin में काम करता है:

तालिका -> आयात पर राइट क्लिक करें

स्थानीय फ़ाइल, प्रारूप और कोडिंग का चयन करें

यहाँ एक जर्मन pgAdmin GUI स्क्रीनशॉट है:

pgAdmin जीयूआई आयात करते हैं

इसी तरह की बात आप DbVisualizer के साथ कर सकते हैं (मेरे पास लाइसेंस है, मुफ्त संस्करण के बारे में निश्चित नहीं है)

एक टेबल पर राइट क्लिक करें -> टेबल डेटा आयात करें ...

DbVisualizer जीयूआई आयात करता है


2
DBVisualizer को तीन क्षेत्रों के साथ 1400 पंक्तियों को आयात करने में 50 सेकंड लगे - और मुझे स्ट्रिंग से जो कुछ भी होना चाहिए था, वह सब वापस करना पड़ा।
नौमेनन


10
  1. पहले एक तालिका बनाएं

  2. तब तालिका विवरण कॉपी करने के लिए कॉपी कमांड का उपयोग करें:

copy table_name (C1, C2, C3 ....)
से सीमांकक ',' CSV हेडर 'पथ अपनी csv फ़ाइल के लिए';

धन्यवाद


3
यह स्वीकृत उत्तर कैसे नहीं है? जब एक डेटाबेस में पहले से ही ऐसा करने की आज्ञा होगी तो मैं एक अजगर स्क्रिप्ट क्यों लिखूंगा?
वेस

8

इस SQL ​​कोड का उपयोग करें

    copy table_name(atribute1,attribute2,attribute3...)
    from 'E:\test.csv' delimiter ',' csv header

हेडर कीवर्ड डीबीएमएस को बताता है कि सीएसवी फ़ाइल में विशेषताओं के साथ हेडर है

अधिक यात्रा के लिए http://www.postgresqltutorial.com/import-csv-file-into-posgresql-table/


8

PostgreSQL के साथ व्यक्तिगत अनुभव, अभी भी एक तेज़ तरीके की प्रतीक्षा कर रहा है।

1. फ़ाइल स्थानीय रूप से संग्रहीत होने पर सबसे पहले टेबल कंकाल बनाएँ:

    drop table if exists ur_table;
    CREATE TABLE ur_table
    (
        id serial NOT NULL,
        log_id numeric, 
        proc_code numeric,
        date timestamp,
        qty int,
        name varchar,
        price money
    );
    COPY 
        ur_table(id, log_id, proc_code, date, qty, name, price)
    FROM '\path\xxx.csv' DELIMITER ',' CSV HEADER;

2. जब \ path \ xxx.csv सर्वर पर होता है, तो postgreSQL को सर्वर तक पहुंचने की अनुमति नहीं होती है, आपको कार्यक्षमता में निर्मित pgAdmin के माध्यम से .csv फ़ाइल आयात करनी होगी।

आयात का चयन करें तालिका नाम पर राइट क्लिक करें।

यहाँ छवि विवरण दर्ज करें

यदि आपको अभी भी समस्या है, तो कृपया इस ट्यूटोरियल को देखें। http://www.postgresqltutorial.com/import-csv-file-into-posgresql-table/


6

CSV फ़ाइल डेटा को PostgreSQL तालिका में कैसे आयात करें?

कदम:

  1. टर्मिनल में postgresql डेटाबेस को कनेक्ट करने की आवश्यकता है

    psql -U postgres -h localhost
  2. डेटाबेस बनाने की आवश्यकता है

    create database mydb;
  3. उपयोगकर्ता बनाने की आवश्यकता है

    create user siva with password 'mypass';
  4. डेटाबेस के साथ कनेक्ट करें

    \c mydb;
  5. स्कीमा बनाने की आवश्यकता है

    create schema trip;
  6. तालिका बनाने की आवश्यकता है

    create table trip.test(VendorID int,passenger_count int,trip_distance decimal,RatecodeID int,store_and_fwd_flag varchar,PULocationID int,DOLocationID int,payment_type decimal,fare_amount decimal,extra decimal,mta_tax decimal,tip_amount decimal,tolls_amount int,improvement_surcharge decimal,total_amount
    );
  7. सीएसवी फ़ाइल डेटा को पोस्टग्रेजेकल में आयात करें

    COPY trip.test(VendorID int,passenger_count int,trip_distance decimal,RatecodeID int,store_and_fwd_flag varchar,PULocationID int,DOLocationID int,payment_type decimal,fare_amount decimal,extra decimal,mta_tax decimal,tip_amount decimal,tolls_amount int,improvement_surcharge decimal,total_amount) FROM '/home/Documents/trip.csv' DELIMITER ',' CSV HEADER;
  8. दिए गए तालिका डेटा का पता लगाएं

    select * from trip.test;

5

IMHO, सबसे सुविधाजनक तरीका है " सीएसवी डेटा को पोस्टग्रैसिकल में आयात करें, आरामदायक तरीका ;-) " का पालन ​​करें , सीएसवीक से सीएसवीस्कल का उपयोग करना , जो कि पाइप के माध्यम से स्थापित अजगर पैकेज है।


3
लिंक सड़न प्रचंड है! आपके द्वारा अब से संबंधित लेख काम नहीं करता है, जो मुझे असहज करता है :(
chbrown

आप यह उल्लेख करना चाह सकते हैं कि उसकी दया है।
पर्वतारोही

1
मेरे लिए मुझे एक मेमोरीरर मिलता है अगर एक बड़े CSV को आयात करने की कोशिश की जाए तो ऐसा लगता है कि यह स्ट्रीम नहीं करता है।
डेविड

@ दाविद दिलचस्प। आपकी फाइल कितनी बड़ी है? आपके पास कितनी मेमोरी है? यदि यह प्रदर्शित नहीं होता है, तो मैं सुझाव देता हूं कि प्रविष्टि से पहले डेटा को chunking
sal

1
फ़ाइल 5GB आकार में थी और मेरे पास 2GB मेमोरी है। मैंने इसे छोड़ दिया और अंत में क्रिएट टेबल और कॉपी कमांड बनाने के लिए एक स्क्रिप्ट का उपयोग किया।
9

3

पायथन में, आप कॉलम नामों के साथ स्वचालित PostgreSQL टेबल निर्माण के लिए इस कोड का उपयोग कर सकते हैं:

import pandas, csv

from io import StringIO
from sqlalchemy import create_engine

def psql_insert_copy(table, conn, keys, data_iter):
    dbapi_conn = conn.connection
    with dbapi_conn.cursor() as cur:
        s_buf = StringIO()
        writer = csv.writer(s_buf)
        writer.writerows(data_iter)
        s_buf.seek(0)
        columns = ', '.join('"{}"'.format(k) for k in keys)
        if table.schema:
            table_name = '{}.{}'.format(table.schema, table.name)
        else:
            table_name = table.name
        sql = 'COPY {} ({}) FROM STDIN WITH CSV'.format(table_name, columns)
        cur.copy_expert(sql=sql, file=s_buf)

engine = create_engine('postgresql://user:password@localhost:5432/my_db')

df = pandas.read_csv("my.csv")
df.to_sql('my_table', engine, schema='my_schema', method=psql_insert_copy)

यह अपेक्षाकृत तेज़ है, मैं लगभग 4 मिनट में 3.3 मिलियन से अधिक पंक्तियों को आयात कर सकता हूं।


2

तुम भी pgfutter का उपयोग कर सकते हैं , या, और भी बेहतर, pgcsv

pgfutter काफी छोटी गाड़ी है, मैं pgcsv को पुनः प्राप्त करूँगा।

यहाँ यह pgcsv के साथ कैसे करें:

sudo pip install pgcsv
pgcsv --db 'postgresql://localhost/postgres?user=postgres&password=...' my_table my_file.csv

1

यदि आपको टेक्स्ट / पार्स मल्टीलाइन CSV से आयात करने के लिए सरल तंत्र की आवश्यकता है तो आप इसका उपयोग कर सकते हैं:

CREATE TABLE t   -- OR INSERT INTO tab(col_names)
AS
SELECT
   t.f[1] AS col1
  ,t.f[2]::int AS col2
  ,t.f[3]::date AS col3
  ,t.f[4] AS col4
FROM (
  SELECT regexp_split_to_array(l, ',') AS f
  FROM regexp_split_to_table(
$$a,1,2016-01-01,bbb
c,2,2018-01-01,ddd
e,3,2019-01-01,eee$$, '\n') AS l) t;

DBFiddle डेमो


1

DBeaver सामुदायिक संस्करण (dbeaver.io) इसे डेटाबेस से कनेक्ट करने के लिए तुच्छ बनाता है, फिर एक PostgreSQL डेटाबेस पर अपलोड के लिए CSV फ़ाइल आयात करें। यह प्रश्नों को जारी करना, डेटा पुनर्प्राप्त करना और CSV, JSON, SQL, या अन्य सामान्य डेटा प्रारूपों के लिए परिणाम सेट डाउनलोड करना आसान बनाता है।

यह SQL प्रोग्रामर, DBA और विश्लेषकों के लिए एक FOSS मल्टी-प्लेटफ़ॉर्म डेटाबेस टूल है जो सभी लोकप्रिय डेटाबेस का समर्थन करता है: MySQL, PostgreSQL, SQLite, Oracle, DB2, SQL Server, Sybase, MS Access, Teradata, Firebird, Hive, Presto, आदि। यह पोस्टग्रैड्स के लिए TOAD, SQL सर्वर के लिए TOAD, या Oracle के लिए टॉड के लिए एक व्यवहार्य FOSS प्रतियोगी है।

DBeaver के साथ मेरा कोई जुड़ाव नहीं है। मुझे कीमत (मुफ़्त!) और पूर्ण कार्यक्षमता पसंद है, लेकिन मेरी इच्छा है कि वे इस DBeaver / ग्रहण एप्लिकेशन को और खोलेंगे और DBeaver / Eclipse में एनालिटिक्स विजेट जोड़ना आसान कर देंगे, बजाय इसके कि उपयोगकर्ताओं को $ 199 वार्षिक सदस्यता के लिए भुगतान करने की आवश्यकता हो। सीधे आवेदन के भीतर रेखांकन और चार्ट बनाने के लिए। मेरे जावा कोडिंग कौशल जंग खाए हुए हैं और मुझे लगता है कि ग्रहण विजेट्स का निर्माण करने के तरीके को दूर करने के लिए हफ्तों का समय नहीं लगता है, (केवल यह खोजने के लिए कि डीबीएवर ने संभवत: डीबीएवर सामुदायिक संस्करण में तीसरे पक्ष के विजेट को जोड़ने की क्षमता को अक्षम कर दिया है।)

क्या DBeaver पावर उपयोगकर्ता जो Java डेवलपर हैं, वे DBeaver के कम्युनिटी एडिशन में जोड़ने के लिए एनालिटिक्स विजेट बनाने के चरणों के बारे में कुछ जानकारी प्रदान कर सकते हैं?


यह समझना अच्छा होगा कि वास्तव में CSV फ़ाइल को आयात करने के लिए DBeaver का उपयोग कैसे करें। फिर भी, यह मदद कर सकता है: dbeaver.com/docs/wiki/Data-transfer
umbe1987

0

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

  1. पोस्टग्रेट्स खोलें और लक्ष्य तालिका पर राइट क्लिक करें जिसे आप आयात करना चाहते हैं और फ़ाइल विकल्प अनुभाग में निम्नलिखित चरणों को अपडेट करना चाहते हैं

  2. अब फ़ाइल नाम में अपनी फ़ाइल ब्राउज़ करें

  3. प्रारूप में csv का चयन करें

  4. ISO_8859_5 के रूप में एन्कोडिंग

अब गोटो मेंट। विकल्प और हेडर की जाँच करें और आयात पर क्लिक करें।


0

मैंने एक छोटा सा टूल बनाया, जो कि csvPostgreSQL के सुपर आसान में फ़ाइल आयात करता है , बस एक कमांड है और यह तालिकाओं को बनाएगा और पॉपुलेट करेगा, दुर्भाग्य से, इस समय सभी फ़ील्ड स्वचालित रूप से बनाए गए प्रकार TEXT का उपयोग करते हैं

csv2pg users.csv -d ";" -H 192.168.99.100 -U postgres -B mydatabase

टूल https://github.com/eduardonunesp/csv2pg पर पाया जा सकता है


आपने के बराबर के लिए एक अलग उपकरण बनाया है psql -h 192.168.99.100 -U postgres mydatabase -c "COPY users FROM 'users.csv' DELIMITER ';' CSV"? मुझे लगता है कि वह हिस्सा जहां यह टेबल बनाता है वह अच्छा है, लेकिन चूंकि हर क्षेत्र टेक्स्ट है यह सुपर उपयोगी नहीं है
गामागेम

1
ऑप्स, ऊपर सिर के लिए धन्यवाद। हां, मैंने इसे किया, अच्छी तरह से कुछ ही घंटे लगे और मैंने गो में कूल सामान सीखा और गो में pq और डेटाबेस एपीआई।
एडुआर्डो परेरा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.