کلیک هاوس db/clickhouse
کلاینت ClickHouse از راه رابط HTTP: دستور، ردیفهای نوعدار، درج دستهای و رابط مشترک دیتابیس.
واردسازی دیتابیس.کلیک هاوس
ClickHouse یک پایگاه دادهی ستونی برای تحلیل داده است: میلیاردها ردیف را سریع میپیماید و درج را دستهای و بزرگ میپذیرد. این بسته با net.http از راه رابط HTTP آن (درگاه ۸۱۲۳، یا ۸۴۴۳ با TLS) با آن حرف میزند، پس نه کتابخانهی درایور لازم است و نه پروتکل بومی. نتیجهها به شکل JSONCompact میرسند و عددهای صحیح ۶۴ بیتی در نقلقول میآیند تا هیچکدام رقمی از دست ندهند.
با باز کردن یا باز کردن نشانی اتصال بسازید، با اجرا دستور بفرستید، با پرسمان ردیف بخوانید و با دسته چندین ردیف را یکجا بارگذاری کنید. مقدارها را یا با تابعهای آرگومان مثل آرگومان رشته و آرگومان صحیح که گریز میدهند، یا با جاگیرهای نوعدار {name:Type} خود ClickHouse در SQL بگذارید. به دیتابیس اتصال را با رابط مشترک دیتابیس سازگار میکند. دستوری که پشت وضعیت ۲۰۰ شکست بخورد، چون کارگزار هنگام ارسال پاسخ به استثنا برخورد کرده، هم گرفته میشود و مثل هر شکست دیگر در خطا و کد دیده میشود.
این بسته پروتکل بومی TCP یا RowBinary را نمیفهمد، فشردهسازی ندارد و هنوز گویشی در db/sql ندارد. هر بخش صفحهی زیر یک قسمت از API است و هر کدام مثال اجرایی دارد.
گذاشتن امن مقدارها در SQL
هرگز SQL را با چسباندن رشتهها نسازید. هر مقدار را با یک تابع آرگومان بسازید که آن را نقلقول و فرار میکند و بگذارید پیوند مقدارها را به ترتیب در جاهای ? بگذارد. پیوند چیزی اجرا نمیکند، پس راه خوبی برای دیدن متن نهایی هم هست. ? درون نقلقول یا توضیح جا حساب نمیشود و اگر تعداد مقدارها با تعداد جاها فرق کند نتیجه خالی است.
واردسازی دیتابیس.کلیک هاوس
تابع ریشه:
ناپایا آرگ := وکتور {} برگردان وکتور<رشته>
آرگ.بیفزا(کلیک هاوس.آرگومان رشته("o'brien"))
آرگ.بیفزا(کلیک هاوس.آرگومان صحیح(۴۲ برگردان صحیح۶۴))
سرچاپ کلیک هاوس.پیوند("SELECT * FROM users WHERE name = ? AND age > ?"، آرگ)
ناپایا یک := وکتور {} برگردان وکتور<رشته>
یک.بیفزا(کلیک هاوس.آرگومان صحیح(۷ برگردان صحیح۶۴))
سرچاپ کلیک هاوس.پیوند("SELECT '?' AS mark, ? /* ? */"، یک)
سرچاپ کلیک هاوس.نقل قول شناسه("my table")
سرچاپ کلیک هاوس.پیوند("SELECT ?"، آرگ).طول()
پایاننقلقول در o'brien خودکار فرار میشود. نام جدول و ستون مقدار نیستند و باید از نقل قول شناسه بگذرند. اجرا و پرسمان هم وقتی مقدارها را بدهید همین جایگذاری را انجام میدهند.
اتصال و ساختن جدول
از گزینههای پیشفرض شروع کنید (سروری روی همین دستگاه و کاربر default) و آنچه فرق دارد را عوض کنید. باز کردن هنوز چیزی نمیفرستد، پس با پینگ ببینید سرور جواب میدهد یا نه. اجرا دستوری را اجرا میکند که ردیفی برنمیگرداند و در موفقیت درست میدهد؛ در شکست خطا و کد علت را میگویند.
واردسازی دیتابیس.کلیک هاوس
تابع ریشه:
ناپایا گ := کلیک هاوس.گزینههای پیشفرض()
گ.نشانی = "127.0.0.1:8123"
گ.پایگاه داده = "default"
گ.نام کاربری = "default"
ناپایا ا := کلیک هاوس.باز کردن(گ)
دیرکن ا.بستن()
اگر وارونه ا.پینگ():
سرچاپ "no ClickHouse at"، گ.نشانی
برگشت ۱
پایان
سرچاپ ا.نسخه کارگزار()
هیچ := وکتور {} برگردان وکتور<رشته>
خوب := ا.اجرا("CREATE TABLE IF NOT EXISTS visits (day Date, page String, hits UInt32) ENGINE = MergeTree ORDER BY (day, page)"، هیچ)
اگر وارونه خوب:
سرچاپ "create failed:"، ا.کد()، ا.خطا()
برگشت ۱
پایان
سرچاپ "table ready"
پایانجدول از موتور MergeTree استفاده میکند که موتور معمول است و ORDER BY آن کلید مرتبسازی است که پرسمان روی روز و صفحه را سریع میکند. کلیکهاوس کلید خودافزای و تراکنشی که منتظرش بمانید ندارد؛ دستور با برگشتن اجرا تمام شده است.
درج به صورت دستهای
کلیکهاوس چند درج بزرگ را بیشتر از درجهای کوچک فراوان دوست دارد. آمادهسازی دسته بخش INSERT INTO table (columns) را میگیرد، افزودن یک ردیف از مقدارهای آمادهی SQL میافزاید و ارسال دسته همهی ردیفها را در یک درخواست میفرستد. اگر ردیف تعداد مقدار متفاوتی با ستونها داشته باشد افزودن نادرست برمیگرداند.
واردسازی دیتابیس.کلیک هاوس
تابع ردیف(روز: رشته، صفحه: رشته، بازدید: صحیح۶۴): وکتور<رشته>:
ناپایا ر := وکتور {} برگردان وکتور<رشته>
ر.بیفزا(کلیک هاوس.آرگومان رشته(روز))
ر.بیفزا(کلیک هاوس.آرگومان رشته(صفحه))
ر.بیفزا(کلیک هاوس.آرگومان صحیح(بازدید))
برگشت ر
پایان
تابع ریشه:
ناپایا ا := کلیک هاوس.باز کردن(کلیک هاوس.گزینههای پیشفرض())
دیرکن ا.بستن()
ناپایا دسته := ا.آمادهسازی دسته("INSERT INTO visits (day, page, hits)")
اگر دسته.خطا().طول() بزرگتر 0:
سرچاپ دسته.خطا()
برگشت ۱
پایان
دسته.افزودن(ردیف("2026-11-01"، "/"، ۱۲۰ برگردان صحیح۶۴))
دسته.افزودن(ردیف("2026-11-01"، "/docs"، ۴۵ برگردان صحیح۶۴))
دسته.افزودن(ردیف("2026-11-02"، "/"، ۹۸ برگردان صحیح۶۴))
سرچاپ دسته.طول()، "rows queued"
اگر وارونه ا.ارسال دسته(دسته):
سرچاپ "insert failed:"، ا.خطا()
برگشت ۱
پایان
سرچاپ "inserted"
پایانصدها یا هزاران ردیف در هر دسته اندازهی خوبی برای شروع است. دستهای که ردیف ندارد یا از قبل خطا دارد فرستاده نمیشود.
خواندن ردیفها
پرسمان یک ردیفها برمیگرداند. معتبر را ببینید، بعد در یک حلقه بعدی را صدا بزنید و ردیف جاری را با شمارهی ستون با متن، صحیح۶۴ و خوانندههای دیگر بخوانید؛ در پایان بستن را بزنید. حلقه با تا نوشته میشود چون تا تا وقتی شرطش درست است اجرا میکند. برای مقداری که از بیرون میآید، جانگهدارهای نوعدار {name:Type} در پرسمان با پارامتر میگذارند خود سرور نوع را بررسی کند.
واردسازی دیتابیس.کلیک هاوس
تابع ریشه:
ناپایا ا := کلیک هاوس.باز کردن(کلیک هاوس.گزینههای پیشفرض())
دیرکن ا.بستن()
ناپایا آرگ := وکتور {} برگردان وکتور<رشته>
آرگ.بیفزا(کلیک هاوس.آرگومان رشته("2026-11-01"))
ناپایا ردیفها := ا.پرسمان("SELECT page, sum(hits) AS total FROM visits WHERE day >= ? GROUP BY page ORDER BY total DESC"، آرگ)
اگر وارونه ردیفها.معتبر():
سرچاپ ردیفها.خطا()
برگشت ۱
پایان
تا ردیفها.بعدی():
سرچاپ ردیفها.متن(۰)، ردیفها.صحیح۶۴(۱)
پایان
ردیفها.بستن()
ناپایا پارامتر := نگاشت {} برگردان نگاشت<رشته، رشته>
پارامتر.درج("page"، "/docs")
ناپایا یک := ا.پرسمان با پارامتر("SELECT sum(hits) FROM visits WHERE page = {page:String}"، پارامتر)
تا یک.بعدی():
سرچاپ "docs:"، یک.صحیح۶۴(۰)
پایان
یک.بستن()
پایانتابع تجمیعی مثل sum(hits) در کلیکهاوس عدد صحیح ۶۴ بیتی است که در JSON با نقلقول میآید و صحیح۶۴ آن را بدون از دست رفتن رقم میخواند.
گونهها
گزینهها Options
ساختار گزینهها| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| نشانی | addr | رشته = "localhost:8123" | میزبان و درگاه به شکل host:port؛ http:// یا https:// در ابتدا پذیرفته میشود. درگاه پیشفرض ۸۱۲۳ است و در حالت امن ۸۴۴۳. |
| پایگاه داده | database | رشته = "" | پایگاه دادهای که هر دستور در آن اجرا میشود؛ خالی یعنی پیشفرض کاربر. |
| نام کاربری | username | رشته = "default" | نام کاربری که در X-ClickHouse-User فرستاده میشود. پیشفرض default است. |
| گذرواژه | password | رشته = "" | گذرواژه که در X-ClickHouse-Key فرستاده میشود. |
| امن | secure | منطقی = نادرست | از HTTPS استفاده شود. |
| مهلت میلیثانیه | timeout_ms | صحیح = 30000 | بیشینهی زمان یک درخواست به میلیثانیه. |
| تنظیمات | settings | نگاشت<رشته، رشته> | تنظیمات ClickHouse که با هر درخواست فرستاده میشود، مثل max_threads. |
| سرآیندها | headers | نگاشت<رشته، رشته> | سرآیندهای HTTP اضافه برای هر درخواست. |
واردسازی دیتابیس.کلیک هاوس
تابع ریشه:
ناپایا o := کلیک هاوس.گزینههای پیشفرض()
o.نشانی = "127.0.0.1:8123"
o.پایگاه داده = "shop"
o.نام کاربری = "default"
o.گذرواژه = ""
o.امن = نادرست
o.مهلت میلیثانیه = 10000
o.تنظیمات.درج("max_threads"، "4")
o.سرآیندها.درج("X-Request-Source"، "docs")
سرچاپ کلیک هاوس.درگاه پیشفرض، کلیک هاوس.درگاه امن پیشفرض
ناپایا c := کلیک هاوس.باز کردن(o)
اگر وارونه c.پینگ():
سرچاپ "no server:"، c.خطا()، c.وضعیت
برگشت
پایان
سرچاپ c.نسخه کارگزار()، c.پایه، c.باز
byurl := کلیک هاوس.باز کردن نشانی("clickhouse://default:@127.0.0.1:8123/shop?max_threads=4")
سرچاپ byurl.معتبر()، byurl.گزینهها.پایگاه داده
none := وکتور {} برگردان وکتور<رشته>
سرچاپ c.اجرا("CREATE TABLE IF NOT EXISTS events (id UInt64, name String) ENGINE = MergeTree ORDER BY id"، none)
ناپایا ins := نگاشت {} برگردان نگاشت<رشته، رشته>
ins.درج("id"، "1")
ins.درج("name"، "first")
سرچاپ c.اجرا با پارامتر("INSERT INTO events VALUES ({id:UInt64}, {name:String})"، ins)
سرچاپ c.اجرا با تنظیمات("OPTIMIZE TABLE events"، none، o.تنظیمات)
ناپایا pn := نگاشت {} برگردان نگاشت<رشته، رشته>
pn.درج("n"، "7")
سرچاپ c.اجرای کامل("SELECT {n:UInt8}"، pn، نگاشت {} برگردان نگاشت<رشته، رشته>)
اگر وارونه c.معتبر():
سرچاپ "failed with code"، c.کد()، c.خطا()
پایان
سرچاپ c.شناسه پرسمان، c.ردیفهای خوانده، c.ردیفهای نوشته
c.بستن()
پایاناتصال Conn
ساختار اتصالمعتبر نادرست است و خطا و کد دلیل را میگویند؛ فراخوانی بعدی آنها را پاک میکند.| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| گزینهها | opts | گزینهها | گزینههایی که اتصال با آنها باز شد. |
| پایه | base | رشته = "" | نشانی پایه، مثل http://127.0.0.1:8123. |
| باز | connected | منطقی = نادرست | پس از بستن یا اگر نشانی نامعتبر بود نادرست است. |
| وضعیت | status | صحیح = 0 | وضعیت HTTP آخرین پاسخ؛ اگر پاسخی نیامد ۰. |
| پیام خطا | err | رشته = "" | متن آخرین خطا. |
| کد خطا | code | صحیح = 0 | کد استثنای ClickHouse در آخرین شکست؛ بدون خطا ۰. |
| شناسه پرسمان | query_id | رشته = "" | شناسهای که کارگزار به آخرین درخواست داد. |
| ردیفهای خوانده | read_rows | صحیح۶۴ = 0 | تعداد ردیفهایی که آخرین درخواست خواند، از سرآیند خلاصهی کارگزار. |
| ردیفهای نوشته | written_rows | صحیح۶۴ = 0 | تعداد ردیفهایی که آخرین درخواست نوشت، از سرآیند خلاصهی کارگزار. |
نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Connect.salam
معتبر Ok
تابع معتبر(): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Connect.salam
خطا Error
تابع خطا(): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Connect.salam
کد Code
تابع کد(): صحیحX-ClickHouse-Exception-Code یا متن Code: N در بدنه.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Connect.salam
بستن Close
تابع بستن()نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Connect.salam
پینگ Ping
تابع پینگ(): منطقی/ping میپرسد؛ اگر کارگزار پاسخ دهد درست است.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Connect.salam
اجرا Exec
تابع اجرا(sql: رشته، args: وکتور<رشته>): منطقی? با مقدار بعدی args جایگزین میشود که با آرگومان رشته، آرگومان صحیح و دیگر تابعهای آرگومان ساخته شده است. علامت سؤال داخل نقلقول و توضیح دستنخورده میماند.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Connect.salam
اجرا با پارامتر ExecParams
تابع اجرا با پارامتر(sql: رشته، params: نگاشت<رشته، رشته>): منطقی{name:Type} اجرا میکند که به شکل پارامتر param_name فرستاده میشوند.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Connect.salam
اجرا با تنظیمات ExecWith
تابع اجرا با تنظیمات(sql: رشته، args: وکتور<رشته>، settings: نگاشت<رشته، رشته>): منطقیاجرا، با تنظیمات ClickHouse فقط برای همین فراخوانی که به تنظیمات گزینهها افزوده میشود.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Connect.salam
اجرای کامل ExecFull
تابع اجرای کامل(sql: رشته، params: نگاشت<رشته، رشته>، extra: نگاشت<رشته، رشته>): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Connect.salam
پرسمان Query
تابع پرسمان(sql: رشته، args: وکتور<رشته>): ردیفها? مثل اجرا. معتبر نتیجه را بررسی کنید و در پایان بستن را بزنید.واردسازی دیتابیس.کلیک هاوس
تابع ریشه:
ناپایا c := کلیک هاوس.باز کردن(کلیک هاوس.گزینههای پیشفرض())
دیرکن c.بستن()
none := وکتور {} برگردان وکتور<رشته>
ناپایا args := وکتور {} برگردان وکتور<رشته>
args.بیفزا(کلیک هاوس.آرگومان طبیعی(10 برگردان طبیعی۶۴))
ناپایا rows := c.پرسمان("SELECT id, name, price, tags, active FROM events WHERE id >= ?"، args)
اگر وارونه rows.معتبر():
سرچاپ rows.خطا()
برگشت
پایان
سرچاپ rows.تعداد ستون()، rows.تعداد ردیف()، rows.جمع
تکرار rows.تعداد ستون() در i:
سرچاپ i، rows.نام ستون(i)، rows.نوع ستون(i)، rows.دسته ستون(i)، rows.شماره ستون(rows.نام ستون(i))
پایان
تا rows.بعدی():
سرچاپ rows.طبیعی۶۴(0)، rows.صحیح۶۴(0)، rows.صحیح(0)، rows.متن(1)، rows.اعشار(2)، rows.منطقی(4)
سرچاپ rows.تهی است(1)، rows.خام(3)، rows.فهرست(3).طول()، rows.ردیف().طول()
سرچاپ rows.متن با نام("name")، rows.صحیح۶۴ با نام("id")، rows.اعشار با نام("price")
پایان
سرچاپ rows.جایگاه، rows.نامها.طول()، rows.نوعها.طول()، rows.ردیفها.طول()، rows.سلولها.طول()
rows.بستن()
ناپایا params := نگاشت {} برگردان نگاشت<رشته، رشته>
params.درج("min"، "10")
ناپایا byname := c.پرسمان با پارامتر("SELECT count() FROM events WHERE id >= {min:UInt64}"، params)
سرچاپ byname.معتبر()
byname.بستن()
ناپایا limits := نگاشت {} برگردان نگاشت<رشته، رشته>
limits.درج("max_execution_time"، "5")
ناپایا limited := c.پرسمان با تنظیمات("SELECT sum(id) FROM events"، none، limits)
سرچاپ limited.معتبر()
limited.بستن()
ناپایا full := c.پرسمان کامل("SELECT {min:UInt64}"، params، limits)
سرچاپ full.معتبر()
full.بستن()
first := c.پرسمان یک ردیف("SELECT id, name FROM events ORDER BY id LIMIT 1"، none)
اگر first.طول() برابر 2:
سرچاپ first.بگیر(0)، first.بگیر(1)
پایان
سرچاپ c.پرسمان متن("SELECT version()")، c.پرسمان عدد("SELECT count() FROM events")
پایانپرسمان با پارامتر QueryParams
تابع پرسمان با پارامتر(sql: رشته، params: نگاشت<رشته، رشته>): ردیفها{name:Type} اجرا میکند.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Query.salam
پرسمان با تنظیمات QueryWith
تابع پرسمان با تنظیمات(sql: رشته، args: وکتور<رشته>، settings: نگاشت<رشته، رشته>): ردیفهاپرسمان، با تنظیمات فقط برای همین فراخوانی.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Query.salam
پرسمان یک ردیف QueryRow
تابع پرسمان یک ردیف(sql: رشته، args: وکتور<رشته>): وکتور<رشته>نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Query.salam
پرسمان کامل QueryFull
تابع پرسمان کامل(sql: رشته، params: نگاشت<رشته، رشته>، extra: نگاشت<رشته، رشته>): ردیفهانمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Query.salam
پرسمان متن QueryText
تابع پرسمان متن(sql: رشته): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Query.salam
پرسمان عدد QueryInt
تابع پرسمان عدد(sql: رشته): صحیح۶۴نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Query.salam
نسخه کارگزار ServerVersion
تابع نسخه کارگزار(): رشتهSELECT version().نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Connect.salam
آمادهسازی دسته PrepareBatch
تابع آمادهسازی دسته(sql: رشته): دستهINSERT INTO table (columns) آغاز میکند؛ VALUES یا نقطهویرگول پایانی کنار گذاشته میشود. هر چیز دیگر دستهای میدهد که خطای آن دلیل را میگوید.واردسازی دیتابیس.کلیک هاوس
تابع ریشه:
ناپایا c := کلیک هاوس.باز کردن(کلیک هاوس.گزینههای پیشفرض())
دیرکن c.بستن()
ناپایا b := c.آمادهسازی دسته("INSERT INTO events (id, name, tags, score)")
اگر b.خطا().طول() بزرگتر 0:
سرچاپ b.خطا()
برگشت
پایان
سرچاپ b.سرآیند، b.پهنا
ناپایا tags := وکتور {} برگردان وکتور<رشته>
tags.بیفزا(کلیک هاوس.آرگومان رشته("a"))
tags.بیفزا(کلیک هاوس.آرگومان رشته("b"))
ناپایا row := وکتور {} برگردان وکتور<رشته>
row.بیفزا(کلیک هاوس.آرگومان صحیح(1 برگردان صحیح۶۴))
row.بیفزا(کلیک هاوس.آرگومان رشته("o'brien"))
row.بیفزا(کلیک هاوس.آرگومان آرایه(tags))
row.بیفزا(کلیک هاوس.آرگومان اعشاری(2.5))
سرچاپ b.افزودن(row)
again := کلیک هاوس.آرگومانها(row)
سرچاپ b.افزودن(again)
سرچاپ c.ارسال دسته(b)
ناپایا broken := c.آمادهسازی دسته("INSERT INTO events (id, name, tags, score)")
ناپایا bad := وکتور {} برگردان وکتور<رشته>
bad.بیفزا(کلیک هاوس.آرگومان تهی())
سرچاپ broken.افزودن(bad)، broken.خطا()، broken.طول()، broken.ردیفها.طول()
broken.رها کردن()
keys := کلیک هاوس.آرگومانها(tags)
سرچاپ کلیک هاوس.آرگومان نگاشت(keys، keys)
سرچاپ کلیک هاوس.آرگومان چندتایی(keys)، کلیک هاوس.آرگومان منطقی(درست)، کلیک هاوس.آرگومان خام("now()")
سرچاپ کلیک هاوس.نقل قول شناسه("my table")
پایانارسال دسته SendBatch
تابع ارسال دسته(b: دسته): منطقیINSERT میفرستد؛ اگر دسته خالی یا خراب باشد یا کارگزار نپذیرد نادرست است.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Batch.salam
ردیفها Rows
ساختار ردیفهابعدی پیش بروید و ردیف جاری را با شماره یا نام ستون بخوانید.| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| نامها | names | وکتور<رشته> | نام ستونها. |
| نوعها | types | وکتور<رشته> | نوع ستونها همانطور که ClickHouse مینویسد، مثل Nullable(String). |
| ردیفها | rows | وکتور<رشته> | همهی ردیفها، هر یک به شکل متن JSON. |
| سلولها | cells | وکتور<رشته> | مقدارهای ردیف جاری به شکل متن JSON. |
| جایگاه | pos | صحیح = -1 | شمارهی ردیف جاری؛ پیش از نخستین بعدی برابر ۱- است. |
| جمع | total | صحیح۶۴ = 0 | تعداد ردیفی که کارگزار گزارش کرد. |
| پیام خطا | err | رشته = "" | متن خطا؛ اگر پرسمان درست بود خالی است. |
نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Query.salam
معتبر Ok
تابع معتبر(): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Query.salam
خطا Error
تابع خطا(): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Query.salam
بعدی Next
تابع بعدی(): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Query.salam
تعداد ردیف RowCount
تابع تعداد ردیف(): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Query.salam
تعداد ستون ColumnCount
تابع تعداد ستون(): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Query.salam
نام ستون ColumnName
تابع نام ستون(col: صحیح): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Query.salam
نوع ستون ColumnType
تابع نوع ستون(col: صحیح): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Query.salam
دسته ستون ColumnKind
تابع دسته ستون(col: صحیح): صحیحKIND_... نوع یک ستون.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Query.salam
شماره ستون ColumnIndex
تابع شماره ستون(name: رشته): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Query.salam
خام Raw
تابع خام(col: صحیح): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Query.salam
تهی است IsNull
تابع تهی است(col: صحیح): منطقیNULL است.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Query.salam
متن Text
تابع متن(col: صحیح): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Query.salam
صحیح۶۴ Int64
تابع صحیح۶۴(col: صحیح): صحیح۶۴نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Query.salam
صحیح Int
تابع صحیح(col: صحیح): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Query.salam
طبیعی۶۴ UInt64
تابع طبیعی۶۴(col: صحیح): طبیعی۶۴نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Query.salam
اعشار Float
تابع اعشار(col: صحیح): اعشار۶۴nan و inf فهمیده میشوند.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Query.salam
منطقی Bool
تابع منطقی(col: صحیح): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Query.salam
فهرست List
تابع فهرست(col: صحیح): وکتور<رشته>نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Query.salam
متن با نام TextBy
تابع متن با نام(name: رشته): رشتهمتن، با نام ستون.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Query.salam
صحیح۶۴ با نام Int64By
تابع صحیح۶۴ با نام(name: رشته): صحیح۶۴صحیح۶۴، با نام ستون.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Query.salam
اعشار با نام FloatBy
تابع اعشار با نام(name: رشته): اعشار۶۴اعشار، با نام ستون.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Query.salam
ردیف Row
تابع ردیف(): وکتور<رشته>نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Query.salam
بستن Close
تابع بستن()نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Query.salam
دسته Batch
ساختار دستهافزودن اضافه کنید و دسته را با ارسال دسته بفرستید.| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| سرآیند | head | رشته = "" | بخش INSERT INTO table (columns). |
| پهنا | width | صحیح = 0 | تعداد ستونهایی که درج نام میبرد؛ اگر نام نبرد ۰. |
| ردیفها | rows | وکتور<رشته> | ردیفهای افزودهشده تا اینجا، هر کدام از پیش به شکل SQL. |
| پیام خطا | err | رشته = "" | متن خطا؛ اگر دسته سالم است خالی. |
نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Batch.salam
افزودن Append
تابع افزودن(values: وکتور<رشته>): منطقیخطا پر میشود.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Batch.salam
طول Len
تابع طول(): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Batch.salam
خطا Error
تابع خطا(): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Batch.salam
رها کردن Abort
تابع رها کردن()نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Batch.salam
پایاها و متغیرها
درگاه پیشفرض DEFAULT_PORT
پایا درگاه پیشفرض: صحیح۳۲ = 8123نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Connect.salam
درگاه امن پیشفرض DEFAULT_SECURE_PORT
پایا درگاه امن پیشفرض: صحیح۳۲ = 8443امن روشن است و نشانی درگاه ندارد.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Connect.salam
نوع دیگر KIND_OTHER
پایا نوع دیگر: صحیح۳۲ = 0واردسازی دیتابیس.کلیک هاوس
تابع ریشه:
ناپایا args := وکتور {} برگردان وکتور<رشته>
args.بیفزا(کلیک هاوس.آرگومان صحیح(7 برگردان صحیح۶۴))
args.بیفزا(کلیک هاوس.آرگومان رشته("it's"))
سرچاپ کلیک هاوس.پیوند("SELECT ? AS id, ? AS name"، args)
t := "LowCardinality(Nullable(String))"
سرچاپ کلیک هاوس.نوع پایه(t)، کلیک هاوس.نوع تهیپذیر است(t)
سرچاپ کلیک هاوس.دسته نوع("Array(Int32)") برابر کلیک هاوس.نوع آرایه
سرچاپ کلیک هاوس.نوع عنصر("Array(Nullable(Int32))")
سرچاپ کلیک هاوس.نوع دیگر، کلیک هاوس.نوع صحیح، کلیک هاوس.نوع طبیعی، کلیک هاوس.نوع اعشاری، کلیک هاوس.نوع دهدهی، کلیک هاوس.نوع رشته
سرچاپ کلیک هاوس.نوع منطقی، کلیک هاوس.نوع تاریخ، کلیک هاوس.نوع تاریخزمان، کلیک هاوس.نوع نگاشت، کلیک هاوس.نوع چندتایی
پایاننوع صحیح KIND_INT
پایا نوع صحیح: صحیح۳۲ = 1Int8 تا Int256.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Types.salam
نوع طبیعی KIND_UINT
پایا نوع طبیعی: صحیح۳۲ = 2UInt8 تا UInt256.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Types.salam
نوع اعشاری KIND_FLOAT
پایا نوع اعشاری: صحیح۳۲ = 3Float32 یا Float64.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Types.salam
نوع دهدهی KIND_DECIMAL
پایا نوع دهدهی: صحیح۳۲ = 4Decimal.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Types.salam
نوع رشته KIND_STRING
پایا نوع رشته: صحیح۳۲ = 5String، FixedString، UUID، Enum، IPv4، IPv6.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Types.salam
نوع منطقی KIND_BOOL
پایا نوع منطقی: صحیح۳۲ = 6Bool.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Types.salam
نوع تاریخ KIND_DATE
پایا نوع تاریخ: صحیح۳۲ = 7Date یا Date32.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Types.salam
نوع تاریخزمان KIND_DATETIME
پایا نوع تاریخزمان: صحیح۳۲ = 8DateTime یا DateTime64.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Types.salam
نوع آرایه KIND_ARRAY
پایا نوع آرایه: صحیح۳۲ = 9Array یا Nested.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Types.salam
نوع نگاشت KIND_MAP
پایا نوع نگاشت: صحیح۳۲ = 10Map.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Types.salam
نوع چندتایی KIND_TUPLE
پایا نوع چندتایی: صحیح۳۲ = 11Tuple.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Types.salam
تابعها
آرگومان رشته StrArg
تابع آرگومان رشته(s: رشته): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Types.salam
نقل قول شناسه QuoteIdent
تابع نقل قول شناسه(name: رشته): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Batch.salam
آرگومان صحیح IntArg
تابع آرگومان صحیح(n: صحیح۶۴): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Batch.salam
آرگومان طبیعی UIntArg
تابع آرگومان طبیعی(n: طبیعی۶۴): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Query.salam
آرگومان اعشاری FloatArg
تابع آرگومان اعشاری(x: اعشار۶۴): رشتهnan، inf و -inf همانطور که ClickHouse میخواند نوشته میشوند.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Batch.salam
آرگومان منطقی BoolArg
تابع آرگومان منطقی(b: منطقی): رشتهtrue یا false.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Batch.salam
آرگومان تهی NullArg
تابع آرگومان تهی(): رشتهNULL.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Batch.salam
آرگومان خام RawArg
تابع آرگومان خام(sql: رشته): رشتهnow(). هرگز با ورودی کاربر به کار نبرید.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Batch.salam
آرگومان آرایه ArrayArg
تابع آرگومان آرایه(items: وکتور<رشته>): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Batch.salam
آرگومان چندتایی TupleArg
تابع آرگومان چندتایی(items: وکتور<رشته>): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Batch.salam
آرگومان نگاشت MapArg
تابع آرگومان نگاشت(keys: وکتور<رشته>، values: وکتور<رشته>): رشتهmap(...) از کلیدها و مقدارهایی که از پیش لفظ SQL هستند؛ فهرست کوتاهتر اندازه را تعیین میکند.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Batch.salam
آرگومانها Args
تابع آرگومانها(items: وکتور<رشته>): وکتور<رشته>نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Batch.salam
پیوند Bind
تابع پیوند(sql: رشته، args: وکتور<رشته>): رشته? های SQL میگذارد و متن را بدون اجرا برمیگرداند. اگر تعدادها نخواند، خالی است.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Types.salam
نوع پایه BaseType
تابع نوع پایه(t: رشته): رشتهNullable(...) و LowCardinality(...).نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Types.salam
نوع تهیپذیر است IsNullableType
تابع نوع تهیپذیر است(t: رشته): منطقیNullable است، شاید درون LowCardinality.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Types.salam
دسته نوع TypeKind
تابع دسته نوع(t: رشته): صحیحKIND_... یک نوع.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Types.salam
نوع عنصر ElementType
تابع نوع عنصر(t: رشته): رشتهArray(...)؛ برای هر چیز دیگر خالی.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Types.salam
گزینههای پیشفرض DefaultOptions
تابع گزینههای پیشفرض(): گزینههاlocalhost:8123، کاربر default، بدون گذرواژه.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Connect.salam
باز کردن Open
تابع باز کردن(o: گزینهها): اتصالپینگ وجود کارگزار را بررسی میکند.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Connect.salam
باز کردن نشانی OpenURL
تابع باز کردن نشانی(dsn: رشته): اتصالclickhouse://user:pass@host:8123/db?secure=true&max_threads=4 اتصال میسازد. clickhouses://، http:// و https:// هم کار میکنند. database، username، password، secure و timeout گزینهها را میگذارند؛ هر کلید دیگر یک تنظیم ClickHouse میشود.نمونهی این مورد همراه با موارد بالاتر آمده است: db-clickhouse-Connect.salam
به دیتابیس AsDb
تابع به دیتابیس(c: اتصال): dyn db.Connectiondyn db.Connection درمیآورد تا کدی که برای رابط مشترک دیتابیس نوشته شده روی ClickHouse هم کار کند. اجرا ۰ یا ۱- برمیگرداند، تعداد تغییرات ردیفهای نوشتهشدهی آخرین درخواست است، شناسه آخرین درج همیشه ۰ است و تراکنش هر دستور را همان لحظه اجرا میکند: ClickHouse تراکنش ندارد، پس ثبت تراکنش ۰ و بازگردانی ۱- برمیگرداند.واردسازی دیتابیس
واردسازی دیتابیس.کلیک هاوس
تابع total(c: پویا دیتابیس.اتصال، table: رشته): صحیح:
برگشت دیتابیس.پرسمان عدد(c، "SELECT count() FROM " + table)
پایان
تابع ریشه:
c := کلیک هاوس.باز کردن(کلیک هاوس.گزینههای پیشفرض())
d := کلیک هاوس.به دیتابیس(c)
دیرکن d.بستن()
سرچاپ d.نوع() برابر دیتابیس.کلیک هاوس، d.پینگ()
سرچاپ total(d، "events")
r := d.پرسمان("SELECT id, name FROM events LIMIT 5")
تا r.بعدی():
سرچاپ r.عدد صحیح۶۴(0)، r.متن(1)، r.نوع ستون(0)
پایان
r.بستن()
t := d.شروع تراکنش()
سرچاپ t.اجرا("INSERT INTO events VALUES (99, 'x')")، t.ثبت تراکنش()
پایان