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

मैं एएससीआईआई (आईएसओ/आईईसी 8859-1) से अपने रेल/पीजीएसक्यूएल डेटाबेस में डेटा कैसे आयात कर सकता हूं?

ज़िप में कई फ़ाइलें हैं:

  inflating: DATA_SRC.txt            
  inflating: DATSRCLN.txt            
  inflating: DERIV_CD.txt            
  inflating: FD_GROUP.txt            
  inflating: FOOD_DES.txt            
  inflating: FOOTNOTE.txt            
  inflating: LANGDESC.txt            
  inflating: LANGUAL.txt             
  inflating: NUT_DATA.txt            
  inflating: NUTR_DEF.txt            
  inflating: sr26_doc.pdf            
  inflating: SRC_CD.txt              
  inflating: WEIGHT.txt         

जिनमें से प्रत्येक एक विचित्र लगभग-सीएसवी-जैसे प्रारूप में प्रतीत होता है, उदा। NUTR_DEF.txt :

~287~^~g~^~GALS~^~Galactose~^~2~^~2100~
~291~^~g~^~FIBTG~^~Fiber, total dietary~^~1~^~1200~

प्लस sr26_doc.pdf , दस्तावेज़ीकरण।

तालिका परिभाषाएं बनाना

तो आपको यहाँ क्या करना है डेटाबेस के लिए SQL तालिका परिभाषाएँ बनाना है - प्रत्येक इनपुट फ़ाइल के लिए एक तालिका के साथ। आपको CREATE TABLE की आवश्यकता है इसके लिए आदेश; PostgreSQL दस्तावेज़ देखें।

पीडीएफ का पृष्ठ 35 आपकी मदद करेगा - "चित्र 1. मानक संदर्भ के लिए यूएसडीए राष्ट्रीय पोषक तत्व डेटाबेस में फाइलों के बीच संबंध"। निम्नलिखित पृष्ठ फ़ाइल स्वरूपों का वर्णन करते हैं, जो आपको बताते हैं कि प्रत्येक कॉलम का क्या अर्थ है। आप CREATE TABLE लिख सकते हैं इस विवरण के आधार पर बयान।

FOOD_DES.txt के लिए यहां एक उदाहरण दिया गया है (खाद्य विवरण), पहली प्रविष्टि।

CREATE TABLE food_des (
    "NDB_No"      varchar(5) NOT NULL PRIMARY KEY,
    "FdGrp_Cd"    varchar(4) NOT NULL,
    "Long_Desc"   varchar(200) NOT NULL,
    "Shrt_Desc"   varchar(60) NOT NULL,
    "ComName"     varchar(100),
    "ManufacName" varchar(65),
    "Survey"      varchar(1),
    "Ref_desc"    varchar(135),
    "Refuse"      smallint,
    "SciName"     varchar(65),
    "N_Factor"    NUMERIC(4,2),
    "Pro_Factor"  NUMERIC(4,2),
    "Fat_Factor"  NUMERIC(4,2),
    "CHO_Factor"  NUMERIC(4,2)
);

यह विवरण की एक सुंदर शाब्दिक प्रति है। ऐसा नहीं है कि मैं टेबल कैसे डिजाइन करूंगा

मैंने NUMERIC . का उपयोग किया है गैर-पूर्णांक संख्यात्मक प्रकारों में सटीकता के लिए मनमाना-सटीक दशमलव फ़्लोटिंग पॉइंट प्रकार। यदि सटीकता से प्रदर्शन अधिक महत्वपूर्ण है, तो आप float4 . का उपयोग कर सकते हैं इसके बजाय।

रिश्तों के लिए, आप FOREIGN KEY का उपयोग करते हैं बाधाएं - बस colname coltype REFERENCES othertable(othercol) एक बनाने के लिए पर्याप्त है।

महत्वपूर्ण :मैंने परिभाषाओं के समान नाम को संरक्षित करने के लिए कॉलम नामों को दोहरा दिया है। इसका मतलब है कि जब आप उन्हें संदर्भित करते हैं तो आपको हमेशा उन्हें दोहराना होगा, उदा। SELECT "NDB_No" FROM food_des; . यदि आप ऐसा नहीं चाहते हैं, तो बस दोहरे उद्धरण चिह्नों को छोड़ दें - या अलग-अलग नाम चुनें। आपको उनके द्वारा उपयोग किए गए अनाड़ी संक्षिप्त कॉलम नामों से चिपके रहने की आवश्यकता नहीं है, और यह लिखना काफी उचित है:

CREATE TABLE food_description (
    ndb_no              varchar(5) NOT NULL PRIMARY KEY,
    foodgroup_code      varchar(4) NOT NULL,
    long_description    varchar(200) NOT NULL,
    short_description   varchar(60) NOT NULL,
    common_name         varchar(100),
    manufacturer_name   varchar(65),

आदि। इसी तरह, यदि आप रेल के साथ काम कर रहे हैं, तो आप टेबल परिभाषाओं को रेल के सम्मेलनों का पालन करने के लिए परिवर्तित कर सकते हैं, खासकर यदि आप रेल के माध्यम से डेटा लोड करने का इरादा रखते हैं।

डेटा लोड हो रहा है

यदि ये समझदार, समझदार सीमांकित फ़ाइलें होतीं तो आप psql का उपयोग करके प्रत्येक तालिका को लोड कर सकते थे कमांड \copy , या PgAdmin-III का "आयात" विकल्प।

यह वास्तव में सीएसवी है, उन्होंने अभी पूरी तरह से विचित्र सीमांकक और उद्धरण वर्णों का उपयोग करने का निर्णय लिया है। psql . के माध्यम से आयात करें साथ:

\copy food_des FROM 'FOOD_DES.txt' (FORMAT CSV, DELIMITER '^', QUOTE '~');

या इसके समकक्ष जो भी टूल आप PostgreSQL से बात करने के लिए उपयोग करते हैं।

परिणाम एक समझदार दिखने वाली तालिका हैं:

craig=> select * from food_des limit 2;
 NDB_No | FdGrp_Cd |         Long_Desc          |        Shrt_Desc         | ComName | ManufacName | Survey | Ref_desc | Refuse | SciName | N_Factor | Pro_Factor | Fat_Factor | CHO_Factor 
--------+----------+----------------------------+--------------------------+---------+-------------+--------+----------+--------+---------+----------+------------+------------+------------
 01001  | 0100     | Butter, salted             | BUTTER,WITH SALT         |         |             | Y      |          |      0 |         |     6.38 |       4.27 |       8.79 |       3.87
 01002  | 0100     | Butter, whipped, with salt | BUTTER,WHIPPED,WITH SALT |         |             | Y      |          |      0 |         |     6.38 |       4.27 |       8.79 |       3.87
(2 rows)

इसी तरह, यदि आप रेल का उपयोग कर रहे हैं तो आप जो भी रेल सीएसवी लाइब्रेरी चाहते हैं उसका उपयोग कर सकते हैं और मॉडल में बल्क-लोड कर सकते हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. इनर जॉइन और आउटर जॉइन; तालिकाओं का क्रम महत्वपूर्ण से है?

  2. PostgreSQL उपयोगकर्ता बनाना और उन्हें डेटाबेस में जोड़ना

  3. कैसे Atan () PostgreSQL में काम करता है

  4. मैं हेरोकू में कॉलम प्रकार कैसे बदलूं?

  5. मैक पर पोस्टग्रेएसक्यूएल के लिए पीडीओ-ड्राइवर स्थापित करना (ग्रहण के लिए ज़ेंड का उपयोग करना)