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

PostgreSQL कॉपी के लिए CSV से स्कीमा कैसे जेनरेट करें

अगर CSV बहुत बड़ी नहीं है और आपकी स्थानीय मशीन पर उपलब्ध है तो csvkit सबसे सरल उपाय है। इसमें CSV के साथ काम करने के लिए कई अन्य सुविधाएं भी शामिल हैं, इसलिए यह एक उपयोगी टूल सामान्य रूप से जानने के लिए।

शेल में अपने सरलतम टाइपिंग पर:

$ csvsql myfile.csv

आवश्यक CREATE TABLE का प्रिंट आउट लेंगे SQL कमांड, जिसे आउटपुट रीडायरेक्शन का उपयोग करके फ़ाइल में सहेजा जा सकता है।

यदि आप एक कनेक्शन स्ट्रिंग भी प्रदान करते हैं csvsql तालिका बनाएगा और फ़ाइल को एक बार में अपलोड करेगा:

$ csvsql --db "$MY_DB_URI" --insert myfile.csv

आप जिस SQL ​​​​और CSV के साथ काम कर रहे हैं, उसके स्वाद को निर्दिष्ट करने के विकल्प भी हैं। वे बिल्टिन सहायता में प्रलेखित हैं:

$ csvsql -h
usage: csvsql [-h] [-d DELIMITER] [-t] [-q QUOTECHAR] [-u {0,1,2,3}] [-b]
              [-p ESCAPECHAR] [-z MAXFIELDSIZE] [-e ENCODING] [-S] [-H] [-v]
              [--zero] [-y SNIFFLIMIT]
              [-i {access,sybase,sqlite,informix,firebird,mysql,oracle,maxdb,postgresql,mssql}]
              [--db CONNECTION_STRING] [--query QUERY] [--insert]
              [--tables TABLE_NAMES] [--no-constraints] [--no-create]
              [--blanks] [--no-inference] [--db-schema DB_SCHEMA]
              [FILE [FILE ...]]

Generate SQL statements for one or more CSV files, create execute those
statements directly on a database, and execute one or more SQL queries.
positional arguments:
  FILE                  The CSV file(s) to operate on. If omitted, will accept
                        input on STDIN.

optional arguments:
  -h, --help            show this help message and exit
  -d DELIMITER, --delimiter DELIMITER
                        Delimiting character of the input CSV file.
  -t, --tabs            Specifies that the input CSV file is delimited with
                        tabs. Overrides "-d".
  -q QUOTECHAR, --quotechar QUOTECHAR
                        Character used to quote strings in the input CSV file.
  -u {0,1,2,3}, --quoting {0,1,2,3}
                        Quoting style used in the input CSV file. 0 = Quote
                        Minimal, 1 = Quote All, 2 = Quote Non-numeric, 3 =
                        Quote None.
  -b, --doublequote     Whether or not double quotes are doubled in the input
                        CSV file.
  -p ESCAPECHAR, --escapechar ESCAPECHAR
                        Character used to escape the delimiter if --quoting 3
                        ("Quote None") is specified and to escape the
                        QUOTECHAR if --doublequote is not specified.
  -z MAXFIELDSIZE, --maxfieldsize MAXFIELDSIZE
                        Maximum length of a single field in the input CSV
                        file.
  -e ENCODING, --encoding ENCODING
                        Specify the encoding the input CSV file.
  -S, --skipinitialspace
                        Ignore whitespace immediately following the delimiter.
  -H, --no-header-row   Specifies that the input CSV file has no header row.
                        Will create default headers.
  -v, --verbose         Print detailed tracebacks when errors occur.
  --zero                When interpreting or displaying column numbers, use
                        zero-based numbering instead of the default 1-based
                        numbering.
  -y SNIFFLIMIT, --snifflimit SNIFFLIMIT
                        Limit CSV dialect sniffing to the specified number of
                        bytes. Specify "0" to disable sniffing entirely.
  -i {access,sybase,sqlite,informix,firebird,mysql,oracle,maxdb,postgresql,mssql}, --dialect {access,sybase,sqlite,informix,firebird,mysql,oracle,maxdb,postgresql,mssql}
                        Dialect of SQL to generate. Only valid when --db is
                        not specified.
  --db CONNECTION_STRING
                        If present, a sqlalchemy connection string to use to
                        directly execute generated SQL on a database.
  --query QUERY         Execute one or more SQL queries delimited by ";" and
                        output the result of the last query as CSV.
  --insert              In addition to creating the table, also insert the
                        data into the table. Only valid when --db is
                        specified.
  --tables TABLE_NAMES  Specify one or more names for the tables to be
                        created. If omitted, the filename (minus extension) or
                        "stdin" will be used.
  --no-constraints      Generate a schema without length limits or null
                        checks. Useful when sampling big tables.
  --no-create           Skip creating a table. Only valid when --insert is
                        specified.
  --blanks              Do not coerce empty strings to NULL values.
  --no-inference        Disable type inference when parsing the input.
  --db-schema DB_SCHEMA
                        Optional name of database schema to create table(s)
                        in.

कई अन्य उपकरण भी स्कीमा अनुमान लगाते हैं जिनमें शामिल हैं:

  • अपाचे स्पार्क
  • पंडों (पायथन)
  • ब्लेज़ (पायथन)
  • read.csv + आर में आपका पसंदीदा डीबी पैकेज

इनमें से प्रत्येक में एक सीएसवी (और अन्य प्रारूपों) को एक सारणीबद्ध डेटा संरचना में पढ़ने की कार्यक्षमता होती है जिसे आमतौर पर डेटाफ्रेम या समान कहा जाता है, जो प्रक्रिया में कॉलम प्रकारों का उल्लेख करता है। उसके बाद उनके पास समकक्ष 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. कैसे कोश () PostgreSQL में काम करता है

  2. PostgreSQL कनेक्शन पूलिंग:भाग 1 - पेशेवरों और विपक्ष

  3. दिनांक मान्य नहीं होने पर त्रुटि उत्पन्न करें

  4. PostgreSQL में पाठ संपीड़न

  5. डीबी अनुप्रयोगों के लिए ऑडिट ट्रेल/परिवर्तन इतिहास छोड़ने के लिए प्रभावी रणनीति?