কিভাবে পোস্টগ্রিএসকিউএল টেবিলের মধ্যে সিএসভি ফাইল ডেটা আমদানি করবেন?


601

আমি কীভাবে কোনও সঞ্চিত প্রক্রিয়া লিখতে পারি যা একটি CSV ফাইল থেকে ডেটা আমদানি করে এবং টেবিলটি জনপ্রিয় করে তোলে?


18
কেন একটি সঞ্চিত পদ্ধতি? কপি কৌশলটি করেন
ফ্রাঙ্ক হিকেন্স

1
আমার কাছে একটি ইউজার ইন্টারফেস রয়েছে যা সিএসভি ফাইল আপলোড করে, এটি হুক করার জন্য আমার সঞ্চিত প্রক্রিয়াটি দরকার যা আসলে
সিভিএস

3
আপনি কীভাবে কপি ব্যবহার করবেন তা বিশদভাবে বলতে পারেন?
বর্ধন

17
বোজিদার বাতসভ ইতিমধ্যে আপনাকে একটি উদাহরণের একটি লিঙ্ক দিয়েছেন, সূক্ষ্ম ম্যানুয়ালটিও সহায়তা করতে পারে: postgresql.org/docs/8.4/interactive/sql-copy.html
ফ্রাঙ্ক হিকেন্স

5
বর্তমান ম্যানুয়াল: postgresql.org/docs/current/static/sql-copy.html
বেসিল বার্ক

উত্তর:


774

এই সংক্ষিপ্ত নিবন্ধটি একবার দেখুন


সমাধান প্যারাফ্রেসড এখানে:

আপনার টেবিলটি তৈরি করুন:

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

আপনার সিএসভি ফাইল থেকে টেবিলটি অনুলিপি করুন:

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

46
আসলে আপনার ব্যবহারকারীর অ্যাক্সেস না থাকলে অনুলিপি একই কৌশলটি ব্যবহার করবে; নন-রুট অ্যাকাউন্টের সাথে কপি ব্যবহার করার সময় এটি আমার ফেডোরা 16 তে অভিযোগ করে।
জিজ্ঞাসা করুন

81
টিআইপি: আপনি সিএসভিতে জিপ_কোডগুলি (কল 1, কল 2, কল 3) ব্যবহার করে আপনার কলামগুলি চিহ্নিত করতে পারেন। কলামগুলি ফাইলে প্রদর্শিত হবে একই ক্রমে তালিকাবদ্ধ থাকতে হবে।
ডেভিড পেলিজ

6
@ জিজ্ঞাসা ডাব্লারডার does অনুলিপিটির কি একই সিনট্যাক্স আছে? bcoz আমি \ অনুলিপি সহ একটি বাক্য গঠন ত্রুটি
পেয়েছি

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
ব্যারেট ক্লার্ক

219

যদি আপনার ব্যবহারের অনুমতি না থাকে COPY(যা ডিবি সার্ভারে কাজ করে) তবে আপনি এর \copyপরিবর্তে (যা ডিবি ক্লায়েন্টে কাজ করে) ব্যবহার করতে পারেন । বোজিদার বাতসভের মতো একই উদাহরণ ব্যবহার করে:

আপনার টেবিলটি তৈরি করুন:

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

আপনার সিএসভি ফাইল থেকে টেবিলটি অনুলিপি করুন:

\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

কপির জন্য ডকুমেন্টেশন দেখুন :

পিএসকিএল নির্দেশ-কপি দিয়ে কপি বিভ্রান্ত করবেন না। \ অনুলিপি এসটিডিন থেকে অনুলিপি বা স্টিপিতে অনুলিপি করে এবং তারপরে পিএসএইচএল ক্লায়েন্টের অ্যাক্সেসযোগ্য কোনও ফাইলে ডেটা সংগ্রহ / সঞ্চয় করে। সুতরাং, ফাইল অ্যাক্সেসযোগ্যতা এবং অ্যাক্সেসের অধিকারগুলি যখন \ অনুলিপি ব্যবহার করা হয় তখন সার্ভারের চেয়ে ক্লায়েন্টের উপর নির্ভর করে।

এবং দ্রষ্টব্য:

পরিচয় কলামগুলির জন্য, কপি FROM কমান্ড সর্বদা ইনপুট ডেটাতে প্রদত্ত কলামের মানগুলি INSERT বিকল্প ওভাররিডিং সিস্টেম ভ্যালুয়ের মতো লিখবে।


voters ভোটারদের অনুলিপি করুন (জিপ, সিটি) FROM '/ ব্যবহারকারীর / ফাইলগুলি / ডাউনলোডগুলি / WOOD.TXT' DELIMITER ',' সিএসভি হেডার; ত্রুটি: শেষ প্রত্যাশিত কলামের পরে অতিরিক্ত ডেটা কন্ট্রাক্ট: কপি ভোটার, লাইন 2: "OH0012781511,87,26953, হাউসহোল্ডার, শেরি, লেইট ,, 11/26 / 1965,08 / 19/1988, 211 এন গারফিল্ড এসটি, ব্লুমড ... "
জেডজেড

@JZ। আমারও তেমন ত্রুটি হয়েছিল কারণ আমার অতিরিক্ত ফাঁকা কলাম ছিল। আপনার সিএসভি পরীক্ষা করে দেখুন এবং যদি আপনার ফাঁকা কলাম থাকে তবে এটি কারণ হতে পারে।
অ্যালেক্স বেনেট

5
এই কিছুটা বিভ্রান্তিকর হল: মধ্যে পার্থক্য COPYএবং\copy কেবলমাত্র অনুমতিগুলির চেয়ে অনেক বেশি এবং এটিকে যাদুকরীভাবে কাজ করতে আপনি কেবল একটি add add যোগ করতে পারবেন না। : বর্ণনা (রপ্তানি প্রেক্ষাপটে) এখানে দেখুন stackoverflow.com/a/1517692/157957
IMSoP

@ আইএমএসপি: আপনি ঠিক বলেছেন, আমি স্পষ্ট করতে সার্ভার এবং ক্লায়েন্টের একটি উল্লেখ যুক্ত করেছি
২৮

@ বিজেলি \ অনুলিপি থেকে অনুলিপি? আরডিএসে আমার একটি 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
ব্যবহারকারীর নাম এবং পাসওয়ার্ড: লগইন তৈরি করতে হবে এবং ব্যবহারকারীকে ডিবি বরাদ্দ করতে হবে। যদি পিজএডমিন ব্যবহার করে, তবে জিইউআই ব্যবহার করে "লগইন / গ্রুপ ভূমিকা" তৈরি করুন
সোমনাথ কদম

9
পান্ডাস স্ক্যুয়েল (বনাম সিএসভি ফাইল) লোড করার একটি দুর্দান্ত ধীর উপায়। ধীর গতির অর্ডার হতে পারে।
ব্যবহারকারী 48956

এটি ডেটা লেখার জন্য একটি উপায় হতে পারে তবে এটি ব্যাচ এবং ভাল কম্পিউটিং শক্তি সহ অতি ধীর। সিএসভি ব্যবহার করা এটি সম্পাদন করার একটি ভাল উপায়।
অঙ্কিত সিং

df.to_sql()সত্যিই ধীর হয়, তাহলে আপনি ব্যবহার করতে পারেন d6tstack.utils.pd_to_psql()থেকে d6tstack দেখুন কর্মক্ষমতা তুলনা
citynorman

30

আপনি পিজএডমিনও ব্যবহার করতে পারেন যা আমদানি করার জন্য জিইউআই সরবরাহ করে। এটি এই সুতোয় দেখানো হয়েছে । পিজএডমিন ব্যবহারের সুবিধা হ'ল এটি দূরবর্তী ডাটাবেসের জন্যও কাজ করে।

যদিও পূর্ববর্তী সমাধানগুলির মতো, আপনার ডাটাবেসে আপনার টেবিলটি ইতিমধ্যে থাকা দরকার। প্রতিটি ব্যক্তির নিজস্ব সমাধান রয়েছে তবে আমি সাধারণত যা করি তা হ'ল এক্সেলে সিএসভি খুলুন, শিরোনামগুলি অনুলিপি করুন, আলাদা ওয়ার্কশিটে ট্রান্সপ্লোজেশন সহ বিশেষ পেস্ট করুন, পরবর্তী কলামে সম্পর্কিত ডেটা টাইপ করুন তারপরে কেবল অনুলিপি করুন এবং এটি একটি পাঠ্য সম্পাদককে পেস্ট করুন is একসাথে যথাযথ এসকিউএল সারণী তৈরি ক্যোয়ারী এর সাথে:

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

1
pls আপনার পেস্ট করা তথ্যের কয়েকটি নমুনা সারি
দেখায়

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
হাই মেহমেট, আপনি পোস্ট করেছেন এমন উত্তরের জন্য ধন্যবাদ তবে আমি যখন আপনার কোডটি চালাই আমি নিম্নলিখিত ত্রুটি বার্তাটি পাই: ত্রুটি: স্কিমা "ডেটা" উপস্থিত নেই
ব্যবহারকারী 2867432

user2867432 আপনার সেই অনুযায়ী ব্যবহার করা স্কিমা নাম পরিবর্তন করতে হবে (যেমন, public)
মেহমেট

হাই মেহমেট, সমাধানের জন্য ধন্যবাদ, এটি নিখুঁত তবে এটি কেবল তখনই কাজ করে যদি পোস্টগ্রিজ ডিবি ব্যবহারকারী সুপারউসার হয় তবে সুপারুজার ছাড়া কাজ করার কোনও উপায় আছে কি?
জিম

গিম: এখানে "সুরক্ষা নির্ধারক" পড়ুন , তবে আমি নিজে এটি ব্যবহার করি নি।
মেহমেট

সুন্দর উত্তর! অন্যদের জন্য পঠনযোগ্যতার জন্য আমার কোডে আমি খুব জেনেরিক যাচ্ছি না।
মনোহর রেড্ডি পোরেড্ডি

19

পল যেমন উল্লেখ করেছেন, আমদানি পিজিএডমিনে কাজ করে:

টেবিল -> আমদানিতে ডান ক্লিক করুন

স্থানীয় ফাইল, ফর্ম্যাট এবং কোডিং নির্বাচন করুন

এখানে একটি জার্মান পিজএডমিন জিইউআই স্ক্রিনশট রয়েছে:

পিজিএডমিন আমদানি জিইউআই

আপনি ডিবিভিউসুয়ালাইজারের সাথে একই জিনিস করতে পারেন (আমার কাছে লাইসেন্স আছে, বিনামূল্যে সংস্করণ সম্পর্কে নিশ্চিত নন)

একটি টেবিলের উপর ডান ক্লিক করুন -> সারণী ডেটা আমদানি করুন ...

DbVisualizer আমদানি জিইউআই I


2
ডিবিভিজুয়ালাইজার তিনটি ক্ষেত্রের সাহায্যে 1400 সারি আমদানি করতে 50 সেকেন্ড সময় নিয়েছিল - এবং আমাকে স্ট্রিং থেকে যা কিছু মনে করা হত, সবই ফিরিয়ে দিতে হয়েছিল।
নুমেনন


10
  1. প্রথমে একটি টেবিল তৈরি করুন

  2. তারপরে টেবিলের বিশদটি অনুলিপি করতে কপি কমান্ডটি ব্যবহার করুন:

কপি TABLE_NAME (গ 1, C2, C3 ....)
থেকে বিভেদক ',' CSV হেডার 'পথ আপনার CSV ফাইলে';

ধন্যবাদ


3
এটি কীভাবে গৃহীত উত্তর নয়? ডাটাবেসে ইতিমধ্যে এটি করার জন্য একটি আদেশ থাকলে আমি কেন অজগর স্ক্রিপ্ট লিখব?
ওয়েস

8

এই এসকিউএল কোডটি ব্যবহার করুন

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

শিরোনাম কীওয়ার্ডটি ডিবিএমএসকে জানতে দেয় যে সিএসভি ফাইলটিতে গুণাবলী সহ একটি শিরোনাম রয়েছে

আরও ভিজিটের জন্য http://www.postgresql


8

পোস্টগ্রিসএসকিউএল সহ ব্যক্তিগত অভিজ্ঞতা, এখনও দ্রুততর পথের জন্য অপেক্ষা করছে।

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;

২. যখন \ পাথ \ xxx.csv সার্ভারে থাকে, পোস্টগ্রিএসকিউএল-এর সার্ভারটি অ্যাক্সেস করার অনুমতি নেই, আপনাকে কার্যকারিতা দ্বারা নির্মিত পিজিএডমিনের মাধ্যমে .csv ফাইলটি আমদানি করতে হবে।

টেবিলের নামটি আমদানি চয়ন করতে ডান ক্লিক করুন।

এখানে চিত্র বর্ণনা লিখুন

আপনার যদি এখনও সমস্যা হয় তবে দয়া করে এই টিউটোরিয়ালটি দেখুন। http://www.postgresqltutorial.com/import-csv-file-into-posgresql-table/


6

কিভাবে পোস্টগ্রিএসকিউএল টেবিলের মধ্যে সিএসভি ফাইল ডেটা আমদানি করবেন?

ধাপ:

  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. Postgresql এ সিএসভি ফাইল ডেটা আমদানি করুন

    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

আইএমএইচও, সবচেয়ে সুবিধাজনক উপায় হ'ল সিএসভিকিট থেকে সিএসভিএসকিএল ব্যবহার করে " পোস্টগ্রাএসকিএল , আরামদায়ক উপায় ;-) " এর মধ্যে সিএসভি ডেটা আমদানি করা , যা পাইপের মাধ্যমে ইনস্টলযোগ্য পাইথন প্যাকেজ।


3
লিঙ্ক পচা উদার! আপনি যে নিবন্ধটি লিঙ্ক করেছেন
সেগুলি

আপনি উল্লেখ করতে চাইতে পারেন যে তিনি পাই।
মাউন্টেন

1
আমার জন্য আমি যদি একটি বড় সিএসভি আমদানির চেষ্টা করি তবে মনে হয় এটি একটি স্ট্রিম হয় না বলে একটি মেমোরিআরর পাই।
ডেভিডসি

@ ডেভিডসি আকর্ষণীয়। আপনার ফাইলটি কত বড়? তোমার কত স্মৃতি আছে? এটি প্রদর্শিত না হতে স্রোত যদি না আসে তবে আমি সন্নিবেশের আগে ডেটা ছাঁটাই করার পরামর্শ দিই
সাল

1
ফাইলটি 5 জিবি আকারের ছিল এবং আমার 2 জিবি মেমরি রয়েছে। আমি এটি ছেড়ে দিয়েছি এবং শেষের দিকে ক্রেটিট টেবিল এবং কপি কমান্ড তৈরি করতে একটি স্ক্রিপ্ট ব্যবহার করি।
ডেভিডসি

3

পাইথনে, আপনি কলামের নাম সহ স্বয়ংক্রিয় পোস্টগ্রিগ এসকিউএল সারণী তৈরির জন্য এই কোডটি ব্যবহার করতে পারেন:

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

আপনি পিজিফুটটার বা আরও ভাল, পিজিসিভিএস ব্যবহার করতে পারেন ।

পিজিফিউটারটি বেশ বগল, আমি পিজিএসভি'র ক্ষতিপূরণ দেব।

পিজিসিএসভি দিয়ে এটি কীভাবে করা যায় তা এখানে:

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

1

আপনার পাঠ্য / মাল্টিলাইন সিএসভি পার্স করে আমদানি করার জন্য যদি সহজ পদ্ধতির প্রয়োজন হয় তবে আপনি ব্যবহার করতে পারেন:

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;

ডিবিফিডাল ডেমো


1

ডিবিভার সম্প্রদায় সংস্করণ (dbeaver.io) একটি ডাটাবেসের সাথে সংযোগ স্থাপনকে তুচ্ছ করে তোলে, তারপরে পোস্টগ্রিসএসকিউএল ডাটাবেসে আপলোড করার জন্য একটি সিএসভি ফাইল আমদানি করে। এটি সিএসভি, জেএসএন, এসকিউএল, বা অন্যান্য সাধারণ ডেটা ফর্ম্যাটগুলিতে প্রশ্নগুলি ইস্যু করা, ডেটা পুনরুদ্ধার করা এবং ফলাফল সেটগুলি ডাউনলোড করা সহজ করে তোলে।

এটি এসকিউএল প্রোগ্রামারস, ডিবিএ এবং বিশ্লেষকদের জন্য একটি ফসএস মাল্টি-প্ল্যাটফর্ম ডাটাবেস সরঞ্জাম যা সমস্ত জনপ্রিয় ডাটাবেসগুলিকে সমর্থন করে: মাইএসকিউএল, পোস্টগ্রিসকিউএল, এসকিউএলাইট, ওরাকল, ডিবি 2, এসকিউএল সার্ভার, সিবাস, এমএস অ্যাকসেস, টেরাদাতা, ফায়ারবার্ড, হাইভ, প্রেস্টো ইত্যাদি supports এটি পোস্টগ্রিসের জন্য টড, এসকিউএল সার্ভারের জন্য টয়ড, বা ওরাকলের জন্য টডের একটি কার্যকর টগবাল প্রতিযোগী।

ডিবিভারের সাথে আমার কোনও সম্পর্ক নেই। আমি দামটি (নিখরচায়!) এবং সম্পূর্ণ কার্যকারিতা পছন্দ করি, তবে আমি আশা করি তারা কেবল এই B 199 বার্ষিক সাবস্ক্রিপশনের জন্য অর্থ প্রদানের পরিবর্তে ডিবিভার / এক্সলিপসে বিশ্লেষণের উইজেটগুলি আরও সহজ করে এবং ডিবিভার / একলাইপসে আরও বিশ্লেষণ উইজেট যুক্ত করতে পারে I সরাসরি প্রয়োগের মধ্যে গ্রাফ এবং চার্ট তৈরি করতে। আমার জাভা কোডিং দক্ষতা মরিচা এবং আমি কীভাবে এক্লিপস উইজেটগুলি তৈরি করবেন তা শিখতে কয়েক সপ্তাহ লাগার মতো মনে হয় না, (কেবলমাত্র ডিবিভারটি সম্ভবত ডিবিভার কমিউনিটি সংস্করণে তৃতীয় পক্ষের উইজেটগুলি যুক্ত করার ক্ষমতা অক্ষম করে দিয়েছে))

জাভা বিকাশকারীরা ডিবিভার শক্তি ব্যবহারকারীরা কি ডিবিভারের সম্প্রদায় সংস্করণে যুক্ত করতে বিশ্লেষণ উইজেট তৈরি করার পদক্ষেপগুলি সম্পর্কে কিছুটা অন্তর্দৃষ্টি দিতে পারেন?


আসলে কোনও সিএসভি ফাইল আমদানির জন্য কীভাবে ডিবিভার ব্যবহার করতে হয় তা বুঝতে পেরে ভাল লাগত। যাইহোক, এটি সাহায্য করতে পারে: dbeaver.com/docs/wiki/Data-transfer
umbe1987

0

টেবিল তৈরি করুন এবং সিএসভি ফাইলে টেবিল তৈরি করার জন্য প্রয়োজনীয় কলামগুলি ব্যবহার করুন।

  1. পোস্টগ্রেস খুলুন এবং টার্গেট সারণীতে ডান ক্লিক করুন যা আপনি লোড করতে এবং আমদানি নির্বাচন করতে চান এবং ফাইল বিকল্প বিভাগে নিম্নলিখিত পদক্ষেপগুলি আপডেট করুন

  2. এখন আপনার ফাইলটি ফাইলনামে ব্রাউজ করুন

  3. ফর্ম্যাটে সিএসভি নির্বাচন করুন

  4. আইএসও_8859_5 হিসাবে এনকোডিং

এখন যাও মিস্ক । অপশন এবং চেক শিরোনাম এবং আমদানি ক্লিক করুন।


0

আমি একটি ছোট্ট সরঞ্জাম তৈরি করেছি যা csvপোস্টগ্র্রেএসকিউএল সুপার ইজিতে ফাইল আমদানি করে , কেবল একটি কমান্ড এবং এটি টেবিলগুলি তৈরি এবং পপুলেট করবে, দুর্ভাগ্যক্রমে, এই মুহুর্তে স্বয়ংক্রিয়ভাবে তৈরি সমস্ত ক্ষেত্র প্রকারটি 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
ওপস, মাথা আপ জন্য ধন্যবাদ। হ্যাঁ, আমি এটি করেছি, বেশ কয়েক ঘন্টা সময় লেগেছিল এবং আমি গো এবং পিকিউতে শীতল জিনিসগুলি এবং গোয়ে ডাটাবেস এপিআই শিখেছি।
এডুয়ার্ডো পেরেইরা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.