概要
このステートメントは、外部からデータをインポートするために使用されます。
OceanBaseデータベースの
LOAD DATAステートメントは、以下の入力ファイルの読み込みをサポートしています:サーバー側(OBServerノード)のファイル:ファイルはOceanBaseデータベースのOBServerノード上に存在します。
LOAD DATA INFILEステートメントまたはLOAD DATA FROM URLステートメントを使用して、サーバー側のファイル内のデータをデータベーステーブルにロードできます。クライアント側(ローカル)のファイル:ファイルはクライアントのローカルファイルシステム上に存在します。
LOAD DATA LOCAL INFILEステートメントまたはLOAD DATA FROM URLステートメントを使用して、クライアント側のローカルファイル内のデータをデータベーステーブルにロードできます。説明
OceanBaseデータベースで
LOAD DATA LOCAL INFILEコマンドを実行すると、システムが自動的にIGNOREオプションを追加します。OSSファイル:ファイルはOSSファイルシステム上に存在します。
LOAD DATA REMOTE_OSS INFILEステートメントを使用して、OSSファイル内のデータをデータベーステーブルにロードできます。
LOAD DATAは現在、CSV形式のテキストファイルのインポートをサポートしており、全体的なインポートプロセスは以下の手順に分けることができます:
ファイルの解析:OceanBaseデータベースは、ユーザーが指定したファイル名に基づいてファイル内のデータを読み取り、指定された並列度に基づいて並列またはシリアル処理で入力ファイル内のデータを解析します。
データの配布:OceanBaseは分散データベースであり、各パーティションのデータは異なるOBServerノードに分散されている可能性があるため、
LOAD DATAは解析したデータを計算し、データをどのOBServerノードに送信する必要があるかを決定します。データの挿入:ターゲットのOBServerノードがデータを受け取ると、そのノード上で
INSERT操作を実行して、データを対応するパーティションに挿入します。
注意事項
トリガー(Trigger)を含むテーブルでは、
LOAD DATAステートメントの使用が禁止されています。外部ファイルからデータをインポートするには、
FILE権限と以下の設定が必要です:- サーバー側のファイルをロードする場合、システム変数secure_file_privを事前に設定し、インポートまたはエクスポートファイルにアクセスできるパスを設定する必要があります。
- クライアント側のローカルファイルをロードする場合、MySQL/OBClientクライアントを起動する際に
--local-infile[=1]オプションを追加して、ローカルファイルシステムからのデータロード機能を有効にする必要があります。
指定されたパーティションをスキップしてインポートする際は、ターゲットテーブルがレプリケーションテーブルであってはならず、自動インクリメント列、識別子列、Global Indexを含んではなりません。
構文
-- 普通のファイルをインポートする
LOAD DATA
[/*+ PARALLEL(N) [load_batch_size(M)] [APPEND | direct(bool, int, [load_mode])] | NO_DIRECT */]
[REMOTE_OSS | LOCAL] INFILE 'file_name'
[REPLACE | IGNORE]
INTO TABLE table_name [PARTITION(PARTITION_OPTION)]
[COMPRESSION [=] {AUTO|NONE|GZIP|DEFLATE|ZSTD}]
[{FIELDS | COLUMNS}
[TERMINATED BY 'string']
[[OPTIONALLY] ENCLOSED BY 'char']
[ESCAPED BY 'char']
]
[LINES
[STARTING BY 'string']
[TERMINATED BY 'string']
]
[IGNORE number {LINES | ROWS}]
[(column_name_var
[, column_name_var] ...)]
load_mode:
'full'
| 'inc_replace'
PARTITION_OPTION:
partition_option_list
| subpartition_option_list
-- URL ファイルをインポートする
LOAD DATA
[/*+ PARALLEL(N) [load_batch_size(M)] [APPEND | direct(bool, int, [load_mode])] | NO_DIRECT */]
[REPLACE | IGNORE]
FROM { url_table_function_expr |
( SELECT expression_list FROM url_table_function_expr ) }
INTO TABLE table_name
[PARTITION(PARTITION_OPTION)]
[(column_name_var [, column_name_var] ...)]
[LOG ERRORS [REJECT LIMIT {integer | UNLIMITED}]]
load_mode:
'full'
| 'inc_replace'
url_table_function_expr:
FILES (
LOCATION = '<string>',
{
FORMAT = (
TYPE = 'CSV',
LINE_DELIMITER = '<string>' | <expr>,
FIELD_DELIMITER = '<string>' | <expr>,
PARSE_HEADER = { TRUE | FALSE },
ESCAPE = '<character>' | <expr>,
FIELD_OPTIONALLY_ENCLOSED_BY = '<character>' | <expr>,
ENCODING = 'charset',
NULL_IF = ('<string>' | <expr>, '<string>' | <expr> ...),
SKIP_HEADER = <int>,
SKIP_BLANK_LINES = { TRUE | FALSE },
TRIM_SPACE = { TRUE | FALSE },
EMPTY_FIELD_AS_NULL = { TRUE | FALSE }
)
| FORMAT = ( TYPE = 'PARQUET' | 'ORC' )
},
[PATTERN = '<regex_pattern>']
)
| SOURCE (
TYPE = 'ODPS',
ACCESSID = '<string>',
ACCESSKEY = '<string>',
ENDPOINT = '<string>',
TUNNEL_ENDPOINT = '<string>',
PROJECT_NAME = '<string>',
SCHEMA_NAME = '<string>',
TABLE_NAME = '<string>',
QUOTA_NAME = '<string>',
COMPRESSION_CODE = '<string>'
)
PARTITION_OPTION:
partition_option_list
| subpartition_option_list
パラメータの説明
| パラメータ | 説明 |
|---|---|
| parallel(N) | データの読み込み並列度。デフォルト値は4です。 |
| load_batch_size(M) | 1回の挿入時のバッチサイズを指定します。M のデフォルト値は 100 です。推奨値の範囲は[100,1000]です。 |
| APPEND | direct() |NO_DIRECT | ヒントを使用してダイレクトロード機能を有効にします。
注意ダイレクトロードタスクを実行している間、OceanBaseデータベースのアップグレード操作を同時に実行することは推奨されません。これはダイレクトロードタスクが失敗する可能性があるためです。
LOAD DATA を使用したダイレクトロードの詳細については、LOAD DATAステートメントを使用したダイレクトロードの使用を参照してください。 |
| REMOTE_OSS | LOCAL | オプションパラメータ。
|
| file_name | 入力ファイルのパスとファイル名を指定します。file_nameには、以下の書式が使用されます:
説明OSS上のファイルをインポートする際には、以下の情報が確保されている必要があります:
|
| REPLACE | IGNORE | 唯一キーの競合が発生した場合、REPLACE は競合行を上書きし、IGNORE は競合行を無視します。LOAD DATA はテーブルの主キーを使用してデータの重複を判断します。テーブルに主キーがない場合、REPLACE と IGNORE オプションには違いはありません。デフォルトでは、重複データが発生した場合、LOAD DATA はエラーとなったデータをログファイルに記録します。
注意
|
| url_table_function_expr | オプション。FILESとSOURCEという2つのキーワードを使用して、ファイルシステムまたはデータソースからデータを読み取ります。 |
| table_name | データをインポートするテーブル名。
|
| PARTITION_OPTION | パーティションロード時のパーティション名を指定します:
説明パーティションの指定はロード専用にのみ適用され、通常のLOAD DATAはサポートされていません。つまり、ヒントとしてロード専用を追加しない場合、またはロード専用の構成パラメータを設定しない場合、LOAD DATAを実行時にパーティションを指定しても効果がありません。 |
| COMPRESSION | 圧縮ファイル形式を指定します。その中で
|
| FIELDS | COLUMNS | フィールドの形式を指定します。
|
| LINES STARTING BY | 行の開始文字を指定します。 |
| LINES TERMINATED BY | 行の終了文字を指定します。 |
| IGNORE number { LINES | ROWS } | 前のいくつかの行を無視します。LINES はファイルの先頭のいくつかの行、ROWS はフィールド区切り記号で指定された先頭のいくつかのデータ行を意味します。デフォルトでは、入力ファイルのフィールドをテーブルの列と1対1で対応付けます。入力ファイルにすべての列が含まれていない場合、不足している列は以下の規則に従ってデフォルトで補完されます:
説明複数ファイルのインポートの場合、単一ファイルのインポートと同じ動作になります。 |
| column_name_var | オプションです。インポートする列名を指定します。 |
| LOG ERRORS [REJECT LIMIT {integer | UNLIMITED}] | オプションです。URL外部テーブルへのインポートプロセスにおけるエラー診断を有効にするために使用されます。詳細については、以下のlog_errorsを参照してください。
説明OceanBaseデータベースV4.3.5バージョンでは、LOAD DATAステートメントによるURL外部テーブルへのインポート構文において、エラー診断の指定がV4.3.5 BP2バージョンからサポートされています。 |
FILES
FILES キーワードは LOCATION 句、FORMAT 句、および PATTERN 句で構成されます。
LOCATION句は外部テーブルファイルの保存パスを指定するために使用されます。通常、外部テーブルのデータファイルは単一のディレクトリに配置され、フォルダ内にはサブディレクトリが含まれることがあります。テーブル作成時に、外部テーブルはこのディレクトリ内のすべてのファイルを自動的に収集します。ローカル LOCATION の形式は
LOCATION = '[file://] local_file_path'であり、ここでlocal_file_pathは相対パスまたは絶対パスのいずれかです。相対パスを入力した場合、現在のディレクトリはOceanBaseデータベースのインストールディレクトリでなければなりません。secure_file_privは、OBServerノードがアクセスできるファイルパスを設定します。local_file_pathはsecure_file_privパスのサブパスである必要があります。リモートLocationの形式は以下のとおりです:
LOCATION = '{oss|cos|S3}://$ACCESS_ID:$ACCESS_KEY@$HOST:s3_region/remote_file_path'ここで$ACCESS_ID、$ACCESS_KEYおよび$HOSTはOSS、COS、およびS3へのアクセスに必要な設定情報であり、s3_regionはS3を使用する際の選択された地域情報です。これらの機密的なアクセス情報は、暗号化された形でデータベースのシステムテーブルに格納されます。LOCATION = 'hdfs://$ {hdfs_namenode_address}:${port}/PATH.localhost'ここでportはHDFSのポート番号を指し、PATHはHDFS内のディレクトリパスを指します。- Kerberos認証付きの場合:
LOCATION = 'hdfs://localhost:port/user?principal=xxx&keytab=xxx&krb5conf=xxx&configs=xxx'。 ここで:principal: 認証ログインユーザーを指します。keytab: ユーザー認証用のキーファイルパスを指定します。krb5conf: Kerberos環境を使用するためのユーザーの記述ファイルパスを指定します。configs: 追加のHDFS構成パラメータを指定します。デフォルトでは空ですが、Kerberos環境の場合は通常この構成パラメータには値があり、設定が必要です。例えば:dfs.data.transfer.protection=authentication,privacyを指定すると、データ転送保護レベルをauthenticationおよびprivacyとします。
- Kerberos認証付きの場合:
注意
オブジェクトストレージのパスを使用する場合、オブジェクトストレージのパスの各パラメータは
&文字で区切られます。入力したパラメータ値には大文字と小文字、数字、\/-_$+=およびワイルドカードのみを含めるようにしてください。上記以外の他の文字を入力した場合、設定に失敗する可能性があります。
FORMAT句は、ファイル読み取り形式関連のプロパティを指定するために使用され、CSV/PARQUET/ORCの3種類のファイル形式をサポートしています。TYPE = 'CSV' の場合、以下のフィールドが含まれます:
LINE_DELIMITER:CSVファイルの行区切り文字を指定します。デフォルトはLINE_DELIMITER='\n'です。FIELD_DELIMITER:オプションです。CSVファイルの列区切り文字を指定します。デフォルトはFIELD_DELIMITER='\t'です。PARSE_HEADER:オプションです。CSVファイルの最初の行が各列の列名であるかどうかを指定します。デフォルトはFALSEで、CSVファイルの最初の行を各列の列名として指定しないことを意味します。ESCAPE:CSVファイルのエスケープ文字を指定します。1文字のみを指定でき、デフォルトはESCAPE ='\'です。FIELD_OPTIONALLY_ENCLOSED_BY:オプションです。CSVファイル内のフィールド値を囲む記号を指定します。デフォルトは空です。このオプションを使用すると、一部のタイプのフィールド(CHAR、VARCHAR、TEXT、JSONなど)のみに囲み文字が追加されます。ENCODING:ファイルの文字セットエンコーディング形式を指定します。指定しない場合、デフォルト値はUTF8MB4です。NULL_IF:NULLとして処理される文字列を指定します。デフォルト値は空です。SKIP_HEADER:ファイルヘッダーをスキップし、スキップする行数を指定します。SKIP_BLANK_LINES:空白行をスキップするかどうかを指定します。デフォルト値はFALSEで、空白の行をスキップしないことを意味します。TRIM_SPACE:ファイル内のフィールドの先頭と末尾のスペースを削除するかどうかを指定します。デフォルト値はFALSEで、ファイル内のフィールドの先頭と末尾のスペースを削除しないことを意味します。EMPTY_FIELD_AS_NULL:空文字列をNULLとして処理するかどうかを指定します。デフォルト値はFALSEで、空文字列をNULLとして処理しないことを意味します。
TYPE = 'PARQUET/ORC' の場合、その他の追加フィールドはありません。
PATTERN句は、LOCATIONディレクトリ内のファイルをフィルタリングするために使用される正規表現パターン文字列を指定します。各 LOCATION ディレクトリ内のファイルパスについて、そのパターン文字列にマッチする場合、外部テーブルはそのファイルにアクセスし、そうでない場合はそのファイルをスキップします。このパラメータを指定しない場合、デフォルトではLOCATIONディレクトリ内のすべてのファイルにアクセスできます。
SOURCE
SOURCE キーワードは他の句を含みません。この場合、TYPE = 'ODPS' であり、以下のフィールドが存在します:
ACCESSID:ODPSユーザーのIDを指定します。ACCESSKEY:ODPSユーザーのパスワードを指定します。ENDPOINT:ODPSサービスの接続アドレスを指定します。TUNNEL_ENDPOINT:Tunnelデータ転送サービスの接続アドレスを指定します。PROJECT_NAME:クエリ対象のテーブルが存在するProjectを指定します。SCHEMA_NAME:オプションです。クエリ対象のテーブルのSCHEMAを指定します。TABLE_NAME:クエリ対象のテーブル名を指定します。QUOTA_NAME:オプションです。指定されたQuotaを使用するかどうかを選択します。COMPRESSION_CODE:オプションです。データソースの圧縮形式を指定します。サポートされている圧縮形式はZLIB、ZSTD、LZ4、ODPS_LZ4の4種類です。設定しない場合は圧縮を有効にしません。
log_errors
LOG ERRORS:インポートプロセスにおけるエラー診断を有効にし、失敗した行を記録することを許可します(現在のバージョンではwarning bufferに記録され、show warningsで確認でき、最大64行まで)。これにより、最初のエラーで全体的な操作が終了するのではなく、処理を継続できます。REJECT LIMIT句と組み合わせて、許容されるエラー行数を制御できます。REJECT LIMIT:オプションで、許容される最大エラー行数を設定するために使用されます。- デフォルト値は0です。これは、エラー行を一切許容せず、最初のエラーが発生すると操作が失敗することを意味します。
integer:単一マシンで許容される最大エラー行数です。例えば、10は1台のマシンでエラーが発生する最大行数を10行に設定することを意味します。UNLIMITED:無限のエラー行を許容します。
注意
LOG ERRORS句を指定しない場合、通常のインポート動作になります。つまり、最初のエラーが発生した時点で直ちにエラーが報告されます。LOG ERRORS句を指定したが、REJECT LIMIT句を指定していない場合、LIMITを0に指定した場合と同じ挙動になります。最初のエラーが発生すると操作は失敗しますが、最初のエラーのみが記録され、エラーコードも診断関連のエラーである「reject limit reached」となります。複数ファイルのダイレクトロード時のワイルドカードルール
複数ファイルのロードを容易にするために、ファイルワイルドカード機能が導入されました。この機能はサーバーサイドおよびOSSファイルのロードに適用されますが、クライアント側のファイルには適用されません。
サーバーサイドでのワイルドカードの使用
マッチングルール:
ファイル名のマッチング:
load data /*+ parallel(20) direct(true, 0) */ infile '/xxx/test.*.csv' replace into table t1 fields terminated by '|';ディレクトリのマッチング:
load data /*+ parallel(20) direct(true, 0) */ infile '/aaa*bb/test.1.csv' replace into table t1 fields terminated by '|';ディレクトリとファイル名の同時マッチング:
load data /*+ parallel(20) direct(true, 0) */ infile '/aaa*bb/test.*.csv' replace into table t1 fields terminated by '|';
注意事項:
マッチするファイルが少なくとも1つ存在する必要があります。そうでない場合、エラーコード4027が返されます。
load data /*+ parallel(20) direct(true, 0) */ infile '/xxx/test.1*.csv,/xxx/test.6*.csv' replace into table t1 fields terminated by '|';の入力では、/xxx/test.1*.csv,/xxx/test.6*.csvが全体としてマッチすると見なされます。マッチしない場合はエラー4027が返されます。POSIXのGLOB関数がサポートするワイルドカードのみがサポートされています。例えば、
test.6*(6|0).csvとtest.6*({0.csv,6.csv}|.csv)はlsコマンドで検索できますが、GLOB関数ではマッチせず、エラー4027が返されます。
クラウドオブジェクトストレージサービス(
OSS)におけるワイルドカードの使用マッチングルール:
ファイル名のマッチング:
load data /*+ parallel(20) direct(true, 0) */ remote_oss infile 'oss://xxx/test.*.csv?host=xxx&access_id=xxx&access_key=xxx' replace into table t1 fields terminated by '|';注意事項:
ディレクトリのマッチングはサポートされていません。例えば:
load data /*+ parallel(20) direct(true, 0) */ remote_oss infile 'oss://aa*bb/test.*.csv?host=xxx&access_id=xxx&access_key=xxx' replace into table t1 fields terminated by '|';はOB_NOT_SUPPORTEDを返します。ファイル名のワイルドカードは
*と?のみサポートされています。他のワイルドカードは入力可能ですが、マッチする結果はありません。
例
説明
LOAD DATAでデータをロードする際、\Nを使用してNULLを表すことができます。サーバーサイドのファイルからデータをインポートする
例1:サーバーサイドのファイルからデータをインポートします。
グローバルセキュアパスを設定します。
obclient> SET GLOBAL secure_file_priv = "/" Query OK, 0 rows affected obclinet> \q Bye説明
secure_file_privはGLOBAL変数であるため、\qを実行して終了させた後に有効になります。データベースに再接続し、外部ファイルからデータをインポートします。
obclient> LOAD DATA INFILE 'test.sql' INTO TABLE t1; Query OK, 0 rows affected
例2:
APPENDヒントを使用してダイレクトロード機能を有効化します。LOAD DATA /*+ PARALLEL(4) APPEND */ INFILE '/home/admin/a.csv' INTO TABLE t;例3:CSV形式のファイルをインポートします。
test1.csvファイルのすべての列をインポートします。load data /*+ direct(true,0) parallel(2)*/ from files( location = "data/csv", format = ( type = 'csv', field_delimiter = ',', parse_header = true, skip_blank_lines = true ), pattern = 'test1.csv') into table t1;data/csvディレクトリ内のtest1.csvファイルのc1、c2列を読み取り、それらをテーブルt1のcol1、col2列にインポートします。load data /*+ direct(true,0) parallel(2)*/ from ( select c1, c2 from files( location = 'data/csv' format = ( type = 'csv', field_delimiter = ',', parse_header = true, skip_blank_lines = true ), pattern = 'test1.csv')) into table t1 (col1, col2);
例4:PARQUET形式のファイルをインポートします。
load data /*+ direct(true,0) parallel(2)*/ from files( location = "data/parquet", format = ( type = 'PARQUET'), pattern = 'test1.parquet') into table t1;例5:ORC形式のファイルをインポートします。
load data /*+ direct(true,0) parallel(2)*/ from files( location = "data/orc", format = ( type = 'ORC'), pattern = 'test1.orc') into table t1;例5:ODPS形式のファイルをインポートします。
load data /*+ direct(true,0) parallel(2)*/ from source ( type = 'ODPS', accessid = '$ODPS_ACCESSID', accesskey = '******', endpoint= '$ODPS_ENDPOINT', project_name = 'example_project', schema_name = '', table_name = 'example_table', quota_name = '', compression_code = '') into table t1;クライアント(ローカル)ファイルからデータをインポートする
例1:ローカルファイルからOceanBaseデータベースのテーブルにデータをインポートします。
ターミナルまたはコマンドプロンプトウィンドウを開き、以下のコマンドを入力してクライアントを起動します。
obclient --local-infile -hxxx.xxx.xxx.xxx -P2881 -uroot@mysql001 -p****** -A -Dtest実行結果は次のとおりです:
Welcome to the OceanBase. Commands end with ; or \g. Your OceanBase connection id is 3221719526 Server version: OceanBase 4.2.2.0 (r100000022023121309-f536833402c6efe9364d5a4b61830a858ef24d82) (Built Dec 13 2023 09:58:18) Copyright (c) 2000, 2018, OceanBase and/or its affiliates. All rights reserved. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. obclient [test]>注意
LOAD DATA LOCAL INFILE機能を使用するには、V2.2.4以降のバージョンのOBClientクライアントを使用してください。バージョンが指定されていないOBClientクライアントを使用する場合でも、MySQLクライアントを使用してデータベースに接続できます。クライアントで、
LOAD DATA LOCAL INFILEステートメントを実行して、ローカルデータファイルを読み込みます。obclient [test]> LOAD DATA LOCAL INFILE '/home/admin/test_data/tbl1.csv' INTO TABLE tbl1 FIELDS TERMINATED BY ',';実行結果は次のとおりです:
Query OK, 3 rows affected Records: 3 Deleted: 0 Skipped: 0 Warnings: 0
例2:COMPRESSIONを設定して圧縮ファイルを直接インポートします。
LOAD DATA LOCAL INFILE '/your/file/lineitem.tbl.gz' INTO TABLE lineitem COMPRESSION GZIP FIELDS TERMINATED BY '|';例3:PARTITIONを使用してパーティション指定によるダイレクトロードを実行します。
- プライマリパーティションのダイレクトロードを指定する
load data /*+ direct(true,0) parallel(2) load_batch_size(100) */ infile "$FILE_PATH" into table t1 partition(p0, p1) fields terminated by '|' enclosed by '' lines starting by '' terminated by '\n';- セカンダリパーティションのダイレクトロードを指定する
load data /*+ direct(true,0) parallel(2) load_batch_size(100) */ infile "$FILE_PATH" into table t1 partition(p0sp0, p1sp1) fields terminated by '|' enclosed by '' lines starting by '' terminated by '\n';OSSファイルからデータをインポートする
例1:
direct(bool, int)ヒントを使用してダイレクトロード機能を有効にし、ダイレクトロードファイルをOSS上に配置します。load data /*+ parallel(1) direct(false,0)*/ remote_oss infile 'oss://antsys-oceanbasebackup/backup_rd/xiaotao.ht/lineitem2.tbl?host=***.oss-cdn.***&access_id=***&access_key=***' into table lineitem fields terminated by '|' enclosed by '' lines starting by '' terminated by '\n';サーバーサイドのファイルからURL外部テーブル形式でデータをインポートする
注意
例に含まれるIPアドレス関連のコマンドは、セキュリティ上の理由により匿名化されています。検証時には、自分のマシンの実際のIPアドレスを記入してください。
以下の手順では、外部ファイルがローカルに存在する場合と、OceanBaseデータベースのMySQLモード内に存在する場合の2つの例を挙げます。
外部ファイルを準備します。
以下のコマンドを実行し、OBServerノードが存在するマシンの
/home/admin/test_csvディレクトリ内にcolumn_conv.csvファイルを作成します。[admin@xxx /home/admin/test_csv]# vi column_conv.csvファイルの内容は次のとおりです:
1,short,short 2,long_text,long_text 3,long_text,long_textインポートするファイルパスを設定します。
注意
セキュリティ上の理由により、システム変数
secure_file_privを設定する際は、ローカルのUnixソケット経由でのみデータベースに接続し、このグローバル変数を変更するSQLステートメントを実行できます。詳細については、secure_file_privを参照してください。以下のコマンドを実行して、OBServerノードが存在するマシンにログインします。
ssh admin@10.10.10.1以下のコマンドを実行して、ローカルUnixソケット接続方式でテナント
mysql001に接続します。obclient -S /home/admin/oceanbase/run/sql.sock -uroot@mysql001 -p******以下のSQLコマンドを実行して、インポートパスを
/home/admin/test_csvに設定します。SET GLOBAL secure_file_priv = "/home/admin/test_csv";
テナント
mysql001に再接続します。例:
obclient -h10.10.10.1 -P2881 -uroot@mysql001 -p****** -A -Ddb_testテーブル
test_tbl1を作成します。CREATE TABLE test_tbl1(col1 VARCHAR(5), col2 VARCHAR(5), col3 VARCHAR(5));LOAD DATAステートメントを使用して、URL外部テーブル構文でテーブルtest_tbl1にデータをインポートし、エラーデバッグを指定します。LOAD DATA FROM FILES( LOCATION = '/home/admin/test_csv', FORMAT = ( TYPE = 'csv', FIELD_DELIMITER = ','), PATTERN = 'column_conv.csv') INTO TABLE test_tbl1 LOG ERRORS REJECT LIMIT UNLIMITED;実行結果は次のとおりです:
Query OK, 1 row affected, 2 warnings Records: 1 Deleted: 0 Skipped: 0 Warnings: 2Warningsを確認します。
SHOW warnings;実行結果は次のとおりです:
+---------+------+----------------------------------------------------------------------------------------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------------------------------------------------------------------------------------+ | Warning | 1406 | fail to scan file column_conv.csv at line 2 for column "db_test"."test_tbl1"."col2", error: Data too long for column | | Warning | 1406 | fail to scan file column_conv.csv at line 3 for column "db_test"."test_tbl1"."col2", error: Data too long for column | +---------+------+----------------------------------------------------------------------------------------------------------------------+ 2 rows in settest_tbl1のデータを確認します。SELECT * FROM test_tbl1;実行結果は次のとおりです:
+------+-------+-------+ | col1 | col2 | col3 | +------+-------+-------+ | 1 | short | short | +------+-------+-------+ 1 row in set
参照ドキュメント
- OceanBaseデータベースに接続する方法の詳細については、接続方式の概要を参照してください。
LOAD DATAステートメントを使用したデータインポートに関するサンプル情報については、LOAD DATAステートメントを使用したデータインポートを参照してください。LOAD DATAステートメントによるダイレクトロードに関するサンプル情報については、LOAD DATAステートメントによるダイレクトロードを参照してください。