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