本ページでは、Upload、Show、Resume といった、Tunnel のアップロードとダウンロード コマンドの使用方法を紹介します。
特徴
クライアントには、Dship ツールの本来の機能を使用するための Tunnelコマンドが実装されています。
- Upload: ファイルまたはディレクトリ (階層レベル 1) のアップロードを実行できます。 1 回につき 1 つのテーブルまたはテーブル パーティションにのみデータをアップロードできます。
パーティション テーブルの場合は、アップロード先のパーティションを指定する必要があります。
tunnel upload log.txt test_project.test_table/p1="b1",p2="b2"; -- Uploads data in log.txt to the test_project project's test_table table, partitions: p1="b1",p2="b2". tunnel upload log.txt test_table --scan=only; -- Uploads data from log.txt to the test_table table.--The scan parameter indicates that the data in log.txt must be scanned to determine if it complies with the test_table definitions.If it does not, the system reports an error and the upload is stopped.
- Download: 1 つのファイルにのみデータをダウンロードできます。 1 回につき 1 つのファイルにダウンロードできるのは、1 つのテーブルまたはパーティションのデータだけです。
パーティション テーブルの場合は、ソース パーティションを指定する必要があります。
tunnel download test_project.test_table/p1="b1",p2="b2" test_table.txt; -- Download data from the table to the test_table.txt file.
- Resume: ネットワークや Tunnel サービスでエラーが発生した場合、中断後にファイルやディレクトリの送信を再開できます。 このコマンドを使用すると、前のデータ アップロード操作は再開できますが、ダウンロード操作は再開できません。
tunnel resume;
- Show: 使用されたコマンド履歴が表示されます。
tunnel show history -n 5; -- Displays details for the last five data upload/download commands. tunnel show log; --Displays the log for the last data upload/download.
- Purge: セッション ディレクトリがクリアされます。 このコマンドを使用すると、3 日前までの履歴がクリアされます。
tunnel purge 5; --Clears logs from the previous five days.
Tunnel アップロードとダウンロードに関する制限事項
Tunnel コマンドは、Array、Map、Struct 型データのアップロードとダウンロードには対応していません。
各セッションには、サーバー上で 24 時間のライフサイクルが設けられています。 セッションが作成されてから 24 時間以内であれば、使用したりプロセスやスレッド間で共有できます。 各セッションのブロック ID は、一意でなくてはいけません。
Tunnel コマンドの使用方法
odps@ project_name>tunnel help;
Usage: tunnel <subcommand> [options] [args]
Type 'tunnel help <subcommand>' for help on a specific subcommand.
Available subcommands:
upload (u)
download (d)
resume (r)
show (s)
purge (p)
help (h)
tunnel is a command for uploading data to / downloading data from MaxCompute.
- upload: MaxCompute テーブルにデータをアップロードします。
- download: MaxCompute テーブルからデータをダウンロードします。
- resume: データのアップロードに失敗した場合、resume コマンドを使用すればアップロードが中断されたところから再開できます。 このコマンドはダウンロード操作には使用しないでください。 各データ アップロードまたはダウンロード操作は、セッションと呼ばれます。 resume コマンドを実行する際、再開するセッションの IDを指定します。
- show: 使用されたコマンド履歴を表示します。
- purge: セッションディレクトリをクリアします。 このコマンドを使用すると、3 日前までの履歴がクリアされます。
- help: Tunnel コマンドに関する「ヘルプ」情報が表示されます。
Upload
odps@ project_name>tunnel help upload;
usage: tunnel upload [options] <path> <[project.]table[/partition]>
upload data from local file
-acp,-auto-create-partition <ARG> auto create target partition if not
exists, default false
-bs,-block-size <ARG> block size in MiB, default 100
-c,-charset <ARG> specify file charset, default ignore.
set ignore to download raw data
-cp,-compress <ARG> compress, default true
-dbr,-discard-bad-records <ARG> specify discard bad records
action(true|false), default false
-dfp,-date-format-pattern <ARG> specify date format pattern, default
yyyy-MM-dd HH:mm:ss;
-fd,-field-delimiter <ARG> specify field delimiter, support
unicode, eg \u0001. default ","
-h,-header <ARG> if local file should have table
header, default false
-mbr,-max-bad-records <ARG> max bad records, default 1000
-ni,-null-indicator <ARG> specify null indicator string,
default ""(empty string)
-rd,-record-delimiter <ARG> specify record delimiter, support
unicode, eg \u0001. default "\r\n"
-s,-scan <ARG> specify scan file
action(true|false|only), default true
-sd,-session-dir <ARG> set session dir, default
D:\software\odpscmd_public\plugins\ds
hip
-ss,-strict-schema <ARG> specify strict schema mode. If false,
extra data will be abandoned and
insufficient field will be filled
with null. Default true
-te,-tunnel_endpoint <ARG> tunnel endpoint
-threads <ARG> number of threads, default 1
-tz,-time-zone <ARG> time zone, default local timezone:
Asia/Shanghai
For example:
tunnel upload log.txt test_project.test_table/p1="b1",p2="b2"
- -acp: アップロード先のパーティションが存在しない場合に、自動的にパーティションを作成するかどうかを指定します。 デフォルトでは、このパラメーターは無効になっています。
- -bs: Tunnelを使用して 1 回にアップロードするデータのブロック サイズを指定します。 デフォルト値は100 MiB(MiB = 1024 * 1024B)です。
- -c: ローカル データ ファイルのエンコーディングを指定します。 デフォルト値はI です。このパラメーターを指定しない場合は、ダウンロードのソース データのエンコーディングがデフォルトで使用されます。
- -cp: トラフィック使用量を削減するために、ローカル ファイルを圧縮してからアップロードするかどうかを指定します。 デフォルトでは、このパラメーターは有効になっています。
- -dbr: 不良データ (余分な列、欠落列、列データ型の不一致など) を無視するかどうかを指定します。
- このパラメーター値を「true」にすると、テーブル定義と一致しないデータはすべて無視されます。
- このパラメーター値を「false」にすると、不良データの場合は自動的にエラーメッセージが表示されますが、アップロード先のテーブルの生データは影響を受けません。
- -dfp: DateTime型のデータ形式を指定します。 デフォルト値は yyyy-MM-dd HH:mm:ss です。 ミリ秒レベルの時間形式を指定するには、tunnel upload -dfp 'yyyy-MM-dd HH:mm:ss.SSS' と記述します。詳細は「データ型 (Data types)」をご参照ください。
- -fd: ローカル ファイルの列の区切り文字を指定します。 デフォルト値は、カンマ「,」です。
- -h: データ ファイルにヘッダーを含めるかどうかを指定します。 「true」を設定すると、ヘッダーはスキップされ、次の行からアップロードが開始されます。
- -mbr: デフォルトでは、不良データが 1000 行を超えると、アップロードは終了します。 このパラメーターを使用すると、不良データの許容数を調整できます。
- -ni: NULL データ識別子を指定します。 デフォルト値は “ “ (空文字列) です。
- -rd: ローカル データの行の区切り文字を指定します。。 デフォルト値は、 \r\n です。
- -s: ローカルデータファイルをスキャンするかどうかを指定します。 デフォルト値は「false.」です。
- 「true」に設定すると、最初にデータがスキャンされて、形式が正しいデータがインポートされます。
- 「false」に設定すると、データはスキャンされずに直接インポートされます。
- パラメーター値が「only」の場合、ローカル データのスキャンのみが実行されます。 スキャン後にデータはインポートされません。
- -sd: セッション ディレクトリを設定します。
- -te: トンネル エンドポイントを指定します。
- -threads: スレッド数を指定します。 デフォルト値は 1 です。
- -tz: タイム ゾーンを指定します。 デフォルト値は、ローカル タイムゾーンのAsia/Shanghai です。
-
アップロード先のテーブルを作成します。
CREATE TABLE IF NOT EXISTS sale_detail( shop_name STRING, customer_id STRING, total_price DOUBLE) PARTITIONED BY (sale_date STRING,region STRING);
- パーティションを追加します。
alter table sale_detail add partition (sale_date='201312', region='hangzhou');
- データファイル data.txt を準備します。内容は次の通りです。
shop9,97,100 shop10,10,200 shop11,11
このファイルの 3 行目のデータは、sale_detail テーブルの定義に準拠していません。 sale_detail, テーブルには 3 つの列が定義されていますが、3 行目には 2 列しかありません。
- データをインポートします。
odps@ project_name>tunnel u d:\data.txt sale_detail/sale_date=201312,region=hangzhou -s false Upload session: 201506101639224880870a002ec60c Start upload:d:\data.txt Total bytes:41 Split input to 1 blocks 2015-06-10 16:39:22 upload block: '1' ERROR: column mismatch -,expected 3 columns, 2 columns found, please check data or delimiter
data.txt には不良データが含まれるため、データのインポートは失敗し、。 セッションID とエラーメッセージが表示されます
- • データを検証します。
odps@ odpstest_ay52c_ay52> select * from sale_detail where sale_date='201312'; ID = 20150610084135370gyvc61z5 +-----------+-------------+-------------+-----------+--------+ | shop_name | customer_id | total_price | sale_date | region | +-----------+-------------+-------------+-----------+--------+ +-----------+-------------+-------------+-----------+--------+
不良データが存在するため、データのインポートに失敗し、テーブルにデータはありません。
Show
odps@ project_name>tunnel help show;
usage: tunnel show history [options]
show session information
-n,-number <ARG> lines
For example:
tunnel show history -n 5
tunnel show log
パラメーター
-n: 表示する行数を指定します。
odps@ project_name>tunnel show history;
201506101639224880870a002ec60c failed 'u --config-file /D:/console/conf/odps_config.ini --project odpstest_ay52c_ay52 --endpoint http://service.odps.aliyun.com/api --id UlVxOHuthHV1QrI1 --key 2m4r3WvTZbsNJjybVXj0InVke7UkvR d:\data.txt sale_detail/sale_date=201312,region=hangzhou -s false'
Resume
odps@ project_name>tunnel help resume;
usage: tunnel resume [session_id] [-force]
resume an upload session
-f,-force force resume
For example:
tunnel resume
例
shop9,97,100
shop10,10,200
odps@ project_name>tunnel resume 201506101639224880870a002ec60c --force;
start resume
201506101639224880870a002ec60c
Upload session: 201506101639224880870a002ec60c
Start upload:d:\data.txt
Resume 1 blocks
2015-06-10 16:46:42 upload block: '1'
2015-06-10 16:46:42 upload block complete, blockid=1
upload complete, average speed is 0 KB/s
OK
odps@ project_name>select * from sale_detail where sale_date='201312';
ID = 20150610084801405g0a741z5
+-----------+-------------+-------------+-----------+--------+
| shop_name | customer_id | total_price | sale_date | region |
+-----------+-------------+-------------+-----------+--------+
| shop9 | 97 | 100.0 | 201312 | hangzhou |
| shop10 | 10 | 200.0 | 201312 | hangzhou |
+-----------+-------------+-------------+-----------+--------+
Download
odps@ project_name>tunnel help download;
usage: tunnel download [options] <[project.]table[/partition]> <path>
download data to local file
-c,-charset <ARG> specify file charset, default ignore.
set ignore to download raw data
-ci,-columns-index <ARG> specify the columns index(starts from
0) to download, use comma to split each
index
-cn,-columns-name <ARG> specify the columns name to download,
use comma to split each name
-cp,-compress <ARG> compress, default true
-dfp,-date-format-pattern <ARG> specify date format pattern, default
yyyy-MM-dd HH:mm:ss
-e,-exponential <ARG> When download double values, use
exponential express if necessary.
Otherwise at most 20 digits will be
reserved. Default false
-fd,-field-delimiter <ARG> specify field delimiter, support
unicode, eg \u0001. default ","
-h,-header <ARG> if local file should have table header,
default false
-limit <ARG> specify the number of records to
download
-ni,-null-indicator <ARG> specify null indicator string, default
""(empty string)
-rd,-record-delimiter <ARG> specify record delimiter, support
unicode, eg \u0001. default "\r\n"
-sd,-session-dir <ARG> set session dir, default
D:\software\odpscmd_public\plugins\dshi
p
-te,-tunnel_endpoint <ARG> tunnel endpoint
-threads <ARG> number of threads, default 1
-tz,-time-zone <ARG> time zone, default local timezone:
Asia/Shanghai
usage: tunnel download [options] instance://<[project/]instance_id> <path>
download instance result to local file
-c,-charset <ARG> specify file charset, default ignore.
set ignore to download raw data
-ci,-columns-index <ARG> specify the columns index(starts from
0) to download, use comma to split each
index
-cn,-columns-name <ARG> specify the columns name to download,
use comma to split each name
-cp,-compress <ARG> compress, default true
-dfp,-date-format-pattern <ARG> specify date format pattern, default
yyyy-MM-dd HH:mm:ss
-e,-exponential <ARG> When download double values, use
exponential express if necessary.
Otherwise at most 20 digits will be
reserved. Default false
-fd,-field-delimiter <ARG> specify field delimiter, support
unicode, eg \u0001. default ","
-h,-header <ARG> if local file should have table header,
default false
-limit <ARG> specify the number of records to
download
-ni,-null-indicator <ARG> specify null indicator string, default
""(empty string)
-rd,-record-delimiter <ARG> specify record delimiter, support
unicode, eg \u0001. default "\r\n"
-sd,-session-dir <ARG> set session dir, default
D:\software\odpscmd_public\plugins\dshi
p
-te,-tunnel_endpoint <ARG> tunnel endpoint
-threads <ARG> number of threads, default 1
-tz,-time-zone <ARG> time zone, default local timezone:
Asia/Shanghai
For example:
tunnel download test_project.test_table/p1="b1",p2="b2" log.txt
tunnel download instance://test_project/test_instance log.txt
- -c: ローカル データ ファイルのエンコーディングを指定します。 デフォルト値は、「Ignore」です。
- -ci: ダウンロードする列のインデックス (0 から開始) を指定します。 複数入力するときは、カンマ (,) 区切ります。
- -cn: ダウンロードする列名を指定します。 複数入力するときは、カンマ (,) で区切ります。
- -cp, -compress: トラフィック使用量を削減するために、データを圧縮してからダウンロードするかどうかを指定します。 デフォルトでは、このパラメーターは有効になっています。
- -dfp: DateTime型のデータ形式で、 デフォルト値は yyyy-MM-dd HH:mm:ss です。
- -e: Double 型のデータをダウンロードする際、このパラメーターを使用して、値を指数関数として表記してください。 表記しない場合、最大 20 桁を保持できます。
- -fd: ローカル データ ファイルの列区切り文字を指定します。 デフォルト値は、カンマ「,」です。
- -h: データ ファイルにヘッダーが含まれるかどうかを指定します。 「true」を設定すると、ヘッダーはスキップされ、次の行からダウンロードが開始されます。
注
-h=true
とthreads>1
は、一緒に使用できません。 - -limit: ダウンロードするファイル数を指定します。
- -ni: NULL データ識別子を指定します。 デフォルト値は “ “ (空文字列) です。
- -rd: ローカル データの行の区切り文字を指定します。 デフォルト値は、\r\n です。
- -sd: セッション ディレクトリを設定します。
- -te: トンネル エンドポイントを指定します。
- -threads: スレッド数を指定します。 デフォルト値は 1 です。
- -tz: タイム ゾーンを指定します。 デフォルト値は、ローカル タイムゾーンの Asia/Shanghai です。
例
$ ./tunnel download sale_detail/sale_date=201312,region=hangzhou result.txt;
Download session: 201506101658245283870a002ed0b9
Total records: 2
2015-06-10 16:58:24 download records: 2
2015-06-10 16:58:24 file size: 30 bytes
OK
shop9,97,100.0
shop10,10,200.0
Purge
odps@ project_name>tunnel help purge;
usage: tunnel purge [n]
force session history to be purged.([n] days before, default
3 days)
For example:
tunnel purge 5
データ型 | 要件 |
---|---|
STRING | 文字列型です。 長さは8 MBを超えることはできません。 |
BOOLEN | アップロードの場合、「true」、 「false」、 「0」、 「1」のみ使用できます。 ダウンロードの場合、「true」または「false」のみ使用できます。大文字と小文字は区別されません。 |
BIGINT | BIGINT 値の範囲: [-9223372036854775807 ~ 9223372036854775807] |
DOUBLE |
|
DATETIME | デフォルトで、Datetime 型のデータは、アップロードの際にUTC+8 に対応しています。 コマンドを使用すると、データ内の日付形式のパターンを指定できます。 |
"yyyyMMddHHmmss": data format "20140209101000"
"yyyy-MM-dd HH:mm:ss" (default): data format "2014-02-09 10:10:00"
"MM/dd/yyyy": data format "09/01/2014"
tunnel upload log.txt test_table -dfp "yyyy-MM-dd HH:mm:ss"
- デフォルトで、空文字列の既定値は Null です。
- Null 文字列を指定するには、コマンドラインで -null-indicator を使用します。
tunnel upload log.txt test_table -ni "NULL"
tunnel upload log.txt test_table -c "gbk"
Delimiter: Tunnel コマンドは、カスタムファイルの区切り文字に対応しています。 行区切り文字は、「-record-delimiter」で、列区切り文字は「-field-delimiter」です。
- 列と行の区切り文字では、複数の文字を使用できます。
- 列の区切り文字に行の区切り文字を含めることはできません。
- コマンドラインでは、エスケープ文字の区切り文字として \r、\n、\t のみ使用できます。
tunnel upload log.txt test_table -fd "||" -rd "\r\n"