.\" Man page generated from reStructuredText. . . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .TH "CSVSQL" "1" "Aug 16, 2024" "2.2.0" "csvkit" .SH "نام (NAME)" csvsql \- تولید دستورات SQL برای فایل‌های CSV یا اجرای مستقیم آن‌ها روی پایگاه داده .SH "توضیحات (DESCRIPTION)" .sp دستورات SQL را برای یک فایل CSV تولید کنید یا آن دستورات را مستقیماً روی یک پایگاه داده اجرا نمایید. در حالت دوم، هم از ایجاد جدول‌ها و هم از درج داده‌ها پشتیبانی می‌شود: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C usage: csvsql [\-h] [\-d DELIMITER] [\-t] [\-q QUOTECHAR] [\-u {0,1,2,3}] [\-b] [\-p ESCAPECHAR] [\-z FIELD_SIZE_LIMIT] [\-e ENCODING] [\-L LOCALE] [\-S] [\-\-blanks] [\-\-null\-value NULL_VALUES [NULL_VALUES ...]] [\-\-date\-format DATE_FORMAT] [\-\-datetime\-format DATETIME_FORMAT] [\-H] [\-K SKIP_LINES] [\-v] [\-l] [\-\-zero] [\-V] [\-i {firebird,mssql,mysql,oracle,postgresql,sqlite,sybase}] [\-\-db CONNECTION_STRING] [\-\-query QUERIES] [\-\-insert] [\-\-prefix PREFIX] [\-\-before\-insert BEFORE_INSERT] [\-\-after\-insert AFTER_INSERT] [\-\-tables TABLE_NAMES] [\-\-no\-constraints] [\-\-unique\-constraint UNIQUE_CONSTRAINT] [\-\-no\-create] [\-\-create\-if\-not\-exists] [\-\-overwrite] [\-\-db\-schema DB_SCHEMA] [\-y SNIFF_LIMIT] [\-I] [\-\-chunk\-size CHUNK_SIZE] [FILE [FILE ...]] تولید دستورات SQL برای یک یا چند فایل CSV، یا اجرای مستقیم آن دستورات روی یک پایگاه داده، و اجرای یک یا چند پرس‌وجوی SQL. آرگومان‌های موضعی: FILE فایل(های) CSV برای پردازش. در صورت عدم ذکر، ورودی را به عنوان داده پایپ‌شده از طریق STDIN می‌پذیرد. گزینه‌های اختیاری: \-h, \-\-help نمایش این پیام راهنما و خروج \-i {mssql,mysql,oracle,postgresql,sqlite,duckdb,crate,ingres}, \-\-dialect {mssql,mysql,oracle,postgresql,sqlite,duckdb,crate,ingres} گویش SQL برای تولید. نمی‌تواند همراه با \-\-db استفاده شود. \-\-db CONNECTION_STRING در صورت وجود، یک رشته اتصال SQLAlchemy برای اجرای مستقیم SQL تولیدشده روی یک پایگاه داده. \-\-engine\-option ENGINE_OPTION ENGINE_OPTION یک آرگومان کلیدواژه‌ای برای create_engine() در SQLAlchemy، به عنوان یک جفت جداشده با فاصله. این گزینه می‌تواند چندین بار مشخص شود. برای مثال: thick_mode True \-\-query QUERIES اجرای یک یا چند پرس‌وجوی SQL جداشده با \-\-sql\- delimiter، و خروجی دادن نتیجه آخرین پرس‌وجو به صورت CSV. مقدار QUERY می‌تواند یک نام فایل باشد. گزینه \-\-query می‌تواند چندین بار مشخص شود. \-\-insert درج داده‌ها درون جدول. نیازمند \-\-db است. \-\-prefix PREFIX افزودن یک عبارت پس از کلیدواژه INSERT، مانند OR IGNORE یا OR REPLACE. \-\-before\-insert BEFORE_INSERT پیش از دستور INSERT، یک یا چند پرس‌وجوی SQL جداشده با \-\-sql\-delimiter را اجرا می‌کند. نیازمند \-\-insert است. \-\-after\-insert AFTER_INSERT پس از دستور INSERT، یک یا چند پرس‌وجوی SQL جداشده با \-\-sql\-delimiter را اجرا می‌کند. نیازمند \-\-insert است. \-\-sql\-delimiter SQL_DELIMITER جداکننده میان پرس‌وجوهای SQL در \-\-query، \-\-before\-insert، و \-\-after\-insert. \-\-tables TABLE_NAMES فهرستی از نام‌های جدول‌ها جداشده با کاما برای ایجاد. به طور پیش‌فرض، نام جدول‌ها بر اساس نام فایل‌ها بدون پسوند یا \(dqstdin\(dq نام‌گذاری می‌شوند. \-\-no\-constraints تولید یک طرحواره (schema) بدون محدودیت‌های طول یا بررسی‌های null. هنگام نمونه‌برداری از جدول‌های بزرگ مفید است. \-\-unique\-constraint UNIQUE_CONSTRAINT فهرستی جداشده با کاما از نام ستون‌ها برای قرار گرفتن در یک قید UNIQUE. \-\-no\-create صرف‌نظر از ایجاد جدول. نیازمند \-\-insert است. \-\-create\-if\-not\-exists ایجاد جدول در صورت عدم وجود، در غیر این صورت ادامه دادن. نیازمند \-\-insert است. \-\-overwrite حذف جدول در صورت وجود قبلی آن. نیازمند \-\-insert است. نمی‌تواند همراه با \-\-no\-create استفاده شود. \-\-db\-schema DB_SCHEMA نام اختیاری طرحواره پایگاه داده (schema) برای ایجاد جدول(ها) در آن. \-y SNIFF_LIMIT, \-\-snifflimit SNIFF_LIMIT محدود کردن شناسایی گویش CSV به تعداد بایت‌های مشخص‌شده. مقدار \(dq0\(dq را برای غیرفعال کردن کامل شناسایی مشخص کنید، یا \(dq\-1\(dq برای بررسی کل فایل. \-I, \-\-no\-inference غیرفعال کردن استنتاج نوع (و \-\-locale، \-\-date\-format، \-\-datetime\-format، \-\-no\-leading\-zeroes) هنگام تحلیل ورودی. \-\-chunk\-size CHUNK_SIZE اندازه قطعه (chunk) برای درج دسته‌ای در جدول. نیازمند \-\-insert است. \-\-min\-col\-len MIN_COL_LEN حداقل طول ستون‌های متنی. \-\-col\-len\-multiplier COL_LEN_MULTIPLIER ضرب کردن حداکثر طول ستون در این ضریب برای گنجاندن مقادیر بزرگتر در اجراهای بعدی. .ft P .fi .UNINDENT .UNINDENT .sp همچنین ببینید: \fI\%آرگومان‌های مشترک همه ابزارها\fP\&. .sp برای اطلاعات بیشتر درباره رشته‌های اتصال و گویش‌های پشتیبانی‌شده به \fI\%مستندات SQLAlchemy\fP مراجعه کنید\&. .sp اگر ترجیح می‌دهید گذرواژه خود را در رشته اتصال وارد نکنید، آن را به طور امن در یک \fI\%فایل گذرواژه PostgreSQL\fP، یک \fI\%فایل گزینه‌های MySQL\fP یا فایل‌های مشابه برای سایر سیستم‌ها ذخیره نمایید. .sp \fBنکته:\fP .INDENT 0.0 .INDENT 3.5 استفاده از گزینه \fB\-\-query\fP ممکن است باعث گرد شدن اعداد (در Python 2) یا بروز \fI\%مشکلات ممیز شناور پایتون\fP (در Python 3) شود. .UNINDENT .UNINDENT .sp \fBنکته:\fP .INDENT 0.0 .INDENT 3.5 اگر فایل CSV با استفاده از \fI\%in2csv\fP از یک فایل JSON ایجاد شده است، به یاد داشته باشید که ستون‌های SQL را به درستی درون علامت نقل‌قول قرار دهید. برای مثال: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C echo \(aq{\(dqa\(dq:{\(dqb\(dq:\(dqc\(dq},\(dqd\(dq:\(dqe\(dq}\(aq | in2csv \-f ndjson | csvsql \-\-query \(aqSELECT \(dqa/b\(dq FROM stdin\(aq .ft P .fi .UNINDENT .UNINDENT .UNINDENT .UNINDENT .sp \fBنکته:\fP .INDENT 0.0 .INDENT 3.5 ابزارهای جایگزین \fI\%csvsql\fP شامل \fI\%q\fP و \fI\%textql\fP هستند\&. .UNINDENT .UNINDENT .SH "مثال‌ها (EXAMPLES)" .SS تولید دستورات SQL .sp تولید یک عبارت در گویش PostgreSQL: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C csvsql \-i postgresql examples/realdata/FY09_EDU_Recipients_by_State.csv .ft P .fi .UNINDENT .UNINDENT .SS تعامل با یک پایگاه داده SQL .sp ایجاد یک جدول و وارد کردن داده‌ها از CSV به طور مستقیم در PostgreSQL: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C createdb test csvsql \-\-db postgresql:///test \-\-tables fy09 \-\-insert examples/realdata/FY09_EDU_Recipients_by_State.csv .ft P .fi .UNINDENT .UNINDENT .sp برای جدول‌های بزرگ ممکن است پردازش کل جدول امکان‌پذیر نباشد. یک راه‌حل برای این مسئله، تحلیل نمونه‌ای از جدول است. در این حالت، غیرفعال کردن محدودیت‌های طول و بررسی‌های null با استفاده از گزینه \fB\-\-no\-constraints\fP می‌تواند مفید باشد: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C head \-n 20 examples/realdata/FY09_EDU_Recipients_by_State.csv | csvsql \-\-no\-constraints \-\-tables fy09 .ft P .fi .UNINDENT .UNINDENT .sp ایجاد جدول‌ها برای تمام فایل‌های CSV موجود در یک دایرکتوری و وارد کردن داده‌های آن فایل‌ها به طور مستقیم در PostgreSQL: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C createdb test csvsql \-\-db postgresql:///test \-\-insert examples/*_converted.csv .ft P .fi .UNINDENT .UNINDENT .sp اگر آن فایل‌های CSV سربرگ‌های یکسانی داشته باشند، می‌توانید ابتدا با استفاده از \fI\%csvstack\fP آن‌ها را در یک جدول وارد کنید: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C createdb test csvstack examples/dummy?.csv | csvsql \-\-db postgresql:///test \-\-insert .ft P .fi .UNINDENT .UNINDENT .SS پرس‌وجو و خروجی گرفتن از فایل‌های CSV با استفاده از SQL .sp می‌توانید از csvsql برای پرس‌وجوی \(dqمستقیم\(dq روی یک یا چند فایل CSV استفاده کنید. لطفاً توجه داشته باشید که این کار یک پایگاه داده SQLite در حافظه ایجاد می‌کند، بنابراین چندان سریع نخواهد بود: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C csvsql \-\-query \(dqSELECT m.usda_id, avg(i.sepal_length) AS mean_sepal_length FROM iris AS i JOIN irismeta AS m ON (i.species = m.species) GROUP BY m.species\(dq examples/iris.csv examples/irismeta.csv .ft P .fi .UNINDENT .UNINDENT .sp گروه‌بندی سطرها بر اساس یک ستون: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C csvsql \-\-query \(dqSELECT * FROM \(aqdummy3\(aq GROUP BY a\(dq examples/dummy3.csv .ft P .fi .UNINDENT .UNINDENT .sp الحاق دو ستون: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C csvsql \-\-query \(dqSELECT a || b FROM \(aqdummy3\(aq\(dq \-\-no\-inference examples/dummy3.csv .ft P .fi .UNINDENT .UNINDENT .sp اگر ستونی حاوی مقادیر null است، باید از \fBCOALESCE\fP برای آن ستون استفاده کنید: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C csvsql \-\-query \(dqSELECT a || COALESCE(b, \(aq\(aq) FROM \(aqsort_ints_nulls\(aq\(dq \-\-no\-inference examples/sort_ints_nulls.csv .ft P .fi .UNINDENT .UNINDENT .sp دستور SQL از نوع \fBUPDATE\fP هیچ خروجی‌ای تولید نمی‌کند. به یاد داشته باشید که ستون‌ها و سطرهای مورد نظر خود را با \fBSELECT\fP انتخاب کنید: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C csvsql \-\-query \(dqUPDATE \(aqdummy3\(aq SET a = \(aqfoo\(aq; SELECT * FROM \(aqdummy3\(aq\(dq examples/dummy3.csv .ft P .fi .UNINDENT .UNINDENT .SH "نویسندگان (AUTHORS)" Christopher Groskopf و مشارکت‌کنندگان .SH "کپی‌رایت و تکثیر (COPYRIGHT)" 2016, Christopher Groskopf and James McKinney .\" Generated by docutils manpage writer. .