3.8 KiB
machine_translated | machine_translated_rev | toc_priority | toc_title |
---|---|---|---|
true | e8cd92bba3 |
37 | Dosya |
Dosya
Bir dosyadan bir tablo oluşturur. Bu tablo işlevi benzer url ve hdf'ler biri.
file(path, format, structure)
Giriş parametreleri
path
— The relative path to the file from user_files_path. Readonly modunda glob'ları takip eden dosya desteğine giden yol:*
,?
,{abc,def}
ve{N..M}
neredeN
,M
— numbers, `'abc', 'def'
— strings.format
— The biçimli dosya.structure
— Structure of the table. Format'column1_name column1_type, column2_name column2_type, ...'
.
Döndürülen değer
Belirtilen dosyada veri okumak veya yazmak için belirtilen yapıya sahip bir tablo.
Örnek
Ayar user_files_path
ve dosyanın içeriği test.csv
:
$ grep user_files_path /etc/clickhouse-server/config.xml
<user_files_path>/var/lib/clickhouse/user_files/</user_files_path>
$ cat /var/lib/clickhouse/user_files/test.csv
1,2,3
3,2,1
78,43,45
Tablo fromdantest.csv
ve ondan ilk iki satır seçimi:
SELECT *
FROM file('test.csv', 'CSV', 'column1 UInt32, column2 UInt32, column3 UInt32')
LIMIT 2
┌─column1─┬─column2─┬─column3─┐
│ 1 │ 2 │ 3 │
│ 3 │ 2 │ 1 │
└─────────┴─────────┴─────────┘
-- getting the first 10 lines of a table that contains 3 columns of UInt32 type from a CSV file
SELECT * FROM file('test.csv', 'CSV', 'column1 UInt32, column2 UInt32, column3 UInt32') LIMIT 10
Yolda Globs
Birden çok yol bileşenleri globs olabilir. İşlenmek için dosya var olmalı ve tüm yol deseniyle eşleşmelidir (sadece sonek veya önek değil).
*
— Substitutes any number of any characters except/
boş dize dahil.?
— Substitutes any single character.{some_string,another_string,yet_another_one}
— Substitutes any of strings'some_string', 'another_string', 'yet_another_one'
.{N..M}
— Substitutes any number in range from N to M including both borders.
İle yapılar {}
benzer olan uzaktan masa fonksiyonu).
Örnek
- Aşağıdaki göreli yollara sahip birkaç dosyamız olduğunu varsayalım:
- ‘some_dir/some_file_1’
- ‘some_dir/some_file_2’
- ‘some_dir/some_file_3’
- ‘another_dir/some_file_1’
- ‘another_dir/some_file_2’
- ‘another_dir/some_file_3’
- Bu dosyalardaki satır miktarını sorgula:
SELECT count(*)
FROM file('{some,another}_dir/some_file_{1..3}', 'TSV', 'name String, value UInt32')
- Bu iki dizinin tüm dosyalarındaki satır miktarını sorgula:
SELECT count(*)
FROM file('{some,another}_dir/*', 'TSV', 'name String, value UInt32')
!!! warning "Uyarıcı"
Dosya listenizde önde gelen sıfırlar içeren sayı aralıkları varsa, her basamak için parantez içeren yapıyı ayrı ayrı kullanın veya kullanın ?
.
Örnek
Adlı dosy thealardan verileri sorgu thelamak file000
, file001
, … , file999
:
SELECT count(*)
FROM file('big_dir/file{0..9}{0..9}{0..9}', 'CSV', 'name String, value UInt32')
Sanal Sütunlar
_path
— Path to the file._file
— Name of the file.
Ayrıca Bakınız