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

PostgreSQL तालिका में डेटाटेबल बल्क का संपूर्ण मान डालें

पैरामीटर का उपयोग करके सरल सम्मिलित करें

आपके प्रोजेक्ट को निम्नलिखित असेंबली को संदर्भित करने की आवश्यकता होगी:Npgsql . अगर यह संदर्भ विजुअल स्टूडियो में दिखाई नहीं दे रहा है , फिर:

  1. कनेक्टर के स्थापना फ़ोल्डर में ब्राउज़ करें
  2. निष्पादित करें:GACInstall.exe
  3. पुनरारंभ करें विजुअल स्टूडियो

नमूना तालिका

CREATE TABLE "OrderHistory"
(
  "OrderId" bigint NOT NULL,
  "TotalAmount" bigint,
  CONSTRAINT "OrderIdPk" PRIMARY KEY ("OrderId")
)
WITH (
  OIDS=FALSE
);
ALTER TABLE "OrderHistory"
  OWNER TO postgres;
GRANT ALL ON TABLE "OrderHistory" TO postgres;
GRANT ALL ON TABLE "OrderHistory" TO public;
ALTER TABLE "OrderHistory" ALTER COLUMN "OrderId" SET (n_distinct=1);

GRANT SELECT("OrderId"), UPDATE("OrderId"), INSERT("OrderId"), REFERENCES("OrderId") ON "OrderHistory" TO public;
GRANT SELECT("TotalAmount"), UPDATE("TotalAmount"), INSERT("TotalAmount"), REFERENCES("TotalAmount") ON "OrderHistory" TO public;

नमूना कोड

निम्नलिखित निर्देशों का उपयोग करना सुनिश्चित करें:

using Npgsql;
using NpgsqlTypes;

अपनी विधि में निम्न स्रोत कोड दर्ज करें:

// Make sure that the user has the INSERT privilege for the OrderHistory table.
NpgsqlConnection connection = new NpgsqlConnection("PORT=5432;TIMEOUT=15;POOLING=True;MINPOOLSIZE=1;MAXPOOLSIZE=20;COMMANDTIMEOUT=20;COMPATIBLE=2.2.4.3;DATABASE=test;HOST=127.0.0.1;PASSWORD=test;USER ID=test");

connection.Open();

DataSet dataSet = new DataSet();

NpgsqlDataAdapter dataAdapter = new NpgsqlDataAdapter("select * from OrderHistory where OrderId=-1", connection);
dataAdapter.InsertCommand = new NpgsqlCommand("insert into OrderHistory(OrderId, TotalAmount) " +
                        " values (:a, :b)", connection);
dataAdapter.InsertCommand.Parameters.Add(new NpgsqlParameter("a", NpgsqlDbType.Bigint));
dataAdapter.InsertCommand.Parameters.Add(new NpgsqlParameter("b", NpgsqlDbType.Bigint));
dataAdapter.InsertCommand.Parameters[0].Direction = ParameterDirection.Input;
dataAdapter.InsertCommand.Parameters[1].Direction = ParameterDirection.Input;
dataAdapter.InsertCommand.Parameters[0].SourceColumn = "OrderId";
dataAdapter.InsertCommand.Parameters[1].SourceColumn = "TotalAmount";

dataAdapter.Fill(dataSet);

DataTable newOrders = dataSet.Tables[0];
DataRow newOrder = newOrders.NewRow();
newOrder["OrderId"] = 20;
newOrder["TotalAmount"] = 20.0;

newOrders.Rows.Add(newOrder);
DataSet ds2 = dataSet.GetChanges();
dataAdapter.Update(ds2);
dataSet.Merge(ds2);
dataSet.AcceptChanges();

connection.Close();

प्रदर्शन पर विचार

मूल पोस्टिंग ने प्रदर्शन आवश्यकताओं का कोई उल्लेख नहीं किया। यह अनुरोध किया गया था कि समाधान अवश्य ही:

  1. एक DataTable का उपयोग करके सम्मिलित करें
  2. लूप का उपयोग किए बिना डेटा डालें

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

  • स्वत:प्रतिबद्धता अक्षम करें
  • COPY का उपयोग करें आदेश
  • अनुक्रमणिका हटाएं
  • विदेशी प्रमुख बाधाएं हटाएं
  • आदि.

पोस्टग्रेज इंसर्ट को ऑप्टिमाइज़ करने के बारे में अधिक जानकारी के लिए, कृपया इस पर एक नज़र डालें:

इसके अलावा, कई अन्य कारक हैं जो सिस्टम के प्रदर्शन को प्रभावित कर सकते हैं। उच्च स्तरीय परिचय के लिए, इस पर एक नज़र डालें:

अन्य विकल्प

  • क्या .NET कनेक्टर पोस्टग्रेज का समर्थन करता है Copy आदेश?
    • यदि नहीं, तो आप स्रोत कोड डाउनलोड कर सकते हैं Npgsql . के लिए कनेक्ट करें और अपना खुद का BulkCopy() add जोड़ें तरीका। पहले स्रोत कोड के लाइसेंसिंग अनुबंध की समीक्षा करना सुनिश्चित करें।
  • यह देखने के लिए जांचें कि क्या पोस्टग्रेस तालिका मान पैरामीटर का समर्थन करता है .
    • यह दृष्टिकोण आपको एक तालिका में Postgres . में पास करने की अनुमति देता है फ़ंक्शन जो तब डेटा को सीधे गंतव्य में सम्मिलित कर सकता है।
  • एक पोस्टग्रेजखरीदें एक विक्रेता से .NET कनेक्टर जिसमें आवश्यक सुविधा शामिल है।

अतिरिक्त संदर्भ



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. स्प्रिंग JdbcTemplate अपडेट पोस्टगिस भूगोल कॉलम

  2. ActiveRecord नेस्टेड चयन

  3. PGError:त्रुटि:संबंध के लिए अनुमति अस्वीकृत (हेरोकू का उपयोग करते समय)

  4. कॉलम प्रकार को रेल में लंबे समय तक स्ट्रिंग में बदलना

  5. मैं अपने सभी डेटा को 5 मीटर की दूरी के भीतर कैसे क्वेरी कर सकता हूं?