すべてのプロダクト
Search
ドキュメントセンター

DataWorks:FTP

最終更新日:Mar 01, 2026

FTP データソースは、FTP サーバーとの間でデータを読み書きするための双方向チャネルを提供します。このトピックでは、DataWorks における FTP データソースのデータ同期機能について説明します。

制限事項

FTP Reader は、リモートの FTP ファイルからデータを読み取り、データ同期プロトコルで要求される形式に変換します。リモートの FTP ファイルは本質的に非構造化であるため、FTP Reader はデータ同期に関して以下の特徴をサポートしています:

サポート

非サポート

  • TXT ファイルのみを読み取ります。TXT ファイル内のスキーマは 2次元テーブルである必要があります。

  • カスタム区切り文字を持つ CSV 形式のファイルをサポートします。

  • 複数のデータ型 (STRING として表現) の読み取り、列のプルーニング、および列の定数をサポートします。

  • 再帰的な読み取りとファイル名のフィルタリングをサポートします。

  • テキスト圧縮をサポートします。サポートされている圧縮形式は gzip、bzip2、zip、lzo、および lzo_deflate です。

  • 複数ファイルからの同時読み取りをサポートします。

  • 単一ファイルからのマルチスレッドによる同時読み取り。これには、単一ファイルに対する内部チャンキングアルゴリズムが含まれます。

  • 単一の圧縮ファイルからのマルチスレッドによる同時読み取りは、技術的にサポートされていません。

FTP Writer は、Data Integration プロトコルで要求される形式からデータを変換し、FTP ファイルに書き込みます。FTP ファイルは本質的に非構造化であるため、FTP Writer は以下の特徴をサポートしています:

サポート

非サポート

  • テキストファイルのみを書き込みます。ビデオデータなどの BLOB データはサポートされていません。テキストファイル内のスキーマは 2次元テーブルである必要があります。

  • カスタム区切り文字を持つ CSV 形式および TEXT ファイル形式をサポートします。

  • マルチスレッド書き込みをサポートします。各スレッドは異なるサブファイルに書き込みます。

  • 単一ファイルへの同時書き込みはサポートされていません。

  • FTP はデータ型を提供しません。FTP Writer はすべてのデータを STRING 型として FTP ファイルに書き込みます。

  • データ書き込み時のテキスト圧縮はサポートされていません。

サポートしているフィールドタイプ

リモートの FTP ファイルにはネイティブのデータ型がありません。したがって、このセクションに記載されているフィールドタイプは DataX FtpReader によって定義されています。

DataX 内部タイプ

リモート FTP ファイルのデータ型

LONG

LONG

DOUBLE

DOUBLE

STRING

STRING

BOOLEAN

BOOLEAN

DATE

DATE

データソースの追加

DataWorks で同期タスクを開発する前に、「データソース管理」の指示に従って、必要なデータソースを DataWorks に追加する必要があります。データソースを追加する際に、DataWorks コンソールで パラメーターの説明 を表示して、各パラメーターの意味を理解できます

データ同期タスクの開発

同期タスクを構成するためのエントリポイントと手順については、以下の構成ガイドをご参照ください。

単一テーブルのオフライン同期タスクの構成ガイド

付録:スクリプトのデモとパラメーターの説明

コードエディタを使用したバッチ同期タスクの構成

コードエディタを使用してバッチ同期タスクを構成する場合、統一されたスクリプト形式の要件に基づいて、スクリプト内の関連パラメーターを構成する必要があります。詳細については、「コードエディタでタスクを構成する」をご参照ください。以下では、コードエディタを使用してバッチ同期タスクを構成する際に、データソースに対して構成する必要があるパラメーターについて説明します。

Reader スクリプトのデモ

{
    "type":"job",
    "version":"2.0",// バージョン番号。
    "steps":[
        {
            "stepType":"ftp",// プラグイン名。
            "parameter":{
                "path":[],// ファイルパス。
                "nullFormat":"",// NULL 値。
                "compress":"",// 圧縮形式。
                "datasource":"",// データソース。
                "column":[// フィールド。
                    {
                        "index":0,// シリアル番号。
                        "type":""// フィールドタイプ。
                    }
                ],
                "skipHeader":"",// ファイルにテーブルヘッダーが含まれているかどうかを指定します。
                "fieldDelimiter":",",// 列区切り文字。
                "encoding":"UTF-8",// エンコード形式。
                "fileFormat":"csv"// テキストファイルタイプ。
            },
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// エラーレコード数。
        },
        "speed":{
        "throttle":true,// throttle を false に設定すると、mbps パラメーターは有効にならず、レート制限は適用されません。throttle を true に設定すると、レート制限が適用されます。
            "concurrent":1, // 同時実行ジョブ数。
            "mbps":"12"// レート制限。1 mbps は 1 MB/s に相当します。
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Reader スクリプトのパラメーター

パラメーター

説明

必須

デフォルト値

datasource

データソースの名前。コードエディタはデータソースの追加をサポートしています。このパラメーターの値は、追加されたデータソースの名前と同じである必要があります。

はい

なし

path

リモート FTP ファイルシステム内のファイルのパスと名前。ファイル名と拡張子を含む完全なパスを指定します。複数のパスを指定できます。

  • 単一のリモート FTP ファイルを指定した場合、FTP Reader は単一のスレッドでのみデータを抽出できます。今後のバージョンでは、単一の非圧縮ファイルからのマルチスレッドによる同時読み取りがサポートされる予定です。

  • 複数のリモート FTP ファイルを指定した場合、FTP Reader はマルチスレッドでのデータ抽出をサポートします。同時実行スレッド数は、チャネル数によって指定されます。

  • ワイルドカード文字を指定した場合、FTP Reader は複数のファイルを走査して見つけ出します。たとえば、`/` を指定すると、ルートディレクトリ内のすべてのファイルが読み取られます。`/bazhen/` を指定すると、下流の bazhen ディレクトリ内のすべてのファイルが読み取られます。FTP Reader は、ファイルワイルドカード文字としてアスタリスク (*) のみをサポートしています。スケジューリングパラメーターを使用して、ファイル名とパスを柔軟に構成できます。

説明
  • アスタリスク (*) の使用は、Java 仮想マシン (JVM) のメモリオーバーフローエラーを引き起こす可能性があるため、推奨されません。

  • データ同期は、ジョブで同期されるすべてのテキストファイルを単一のデータテーブルとして扱います。すべてのファイルが同じスキーマに適応できることを確認する必要があります。

  • 読み取るファイルが CSV 形式であり、データ同期システムがそれらのファイルに対する読み取り権限を持っていることを確認する必要があります。

  • path パラメーターで指定されたパスに一致するファイルが見つからない場合、同期タスクはエラーを報告します。

はい

なし

column

読み取るフィールドのリスト。type はソースデータの型を指定します。index はテキストファイル内のフィールドの列番号を指定します。index の値は 0 から始まります。value は、現在のフィールドが定数であることを指定します。データはソースファイルから読み取られず、代わりに value の値に基づいて対応する列が自動的に生成されます。

デフォルトでは、パラメーターを "column":["*"] に設定することで、すべてのデータを STRING 型として読み取ることができます。また、column フィールド情報を指定することもできます。以下のコードは例を示しています。

{
    "type": "long",
    "index": 0    // リモート FTP テキストファイルの最初の列から LONG フィールドを取得します。
  },
  {
    "type": "string",
    "value": "alibaba"  // FTP Reader 内で alibaba という名前の文字列フィールドを生成し、現在のフィールドとして使用します。
  }

指定する column 情報では、type は必須です。index または value のいずれかを指定する必要があります。

はい

なし

fieldDelimiter

データを読み取る際のフィールド区切り文字。

説明

FTP Reader がデータを読み取る際には、フィールド区切り文字を指定する必要があります。このパラメーターを指定しない場合、デフォルト値 (,) が使用されます。UI も (,) をデフォルト値として使用します。

はい

,

skipHeader

CSV 形式のファイルには、スキップする必要があるヘッダー行が含まれている場合があります。デフォルトでは、ヘッダー行はスキップされません。skipHeader は圧縮ファイルではサポートされていません。

いいえ

false

encoding

読み取るファイルのエンコード形式。

いいえ

utf-8

nullFormat

テキストファイルでは、標準の文字列を使用してヌルポインタを定義することはできません。データ同期は、どの文字列が NULL を表すことができるかを定義するために nullFormat パラメーターを提供します。例:

  • nullFormat:"null" を設定した場合 (表示可能文字に相当)、ソースデータが null であれば、データ同期はそれを NULL フィールドとして扱います。

  • nullFormat:"\u0001" を設定した場合 (表示不可能文字に相当)、ソースデータが文字列 `"\u0001"` であれば、データ同期はそれを NULL フィールドとして扱います。

  • "nullFormat" パラメーターを指定しない場合 (構成しない場合と同等)、ソースデータは変換されずにそのまま宛先に書き込まれます。

いいえ

なし

markDoneFileName

マークファイルの名前。データ同期の前に、システムはマークファイルの存在を確認します。マークファイルが存在しない場合、システムは一定期間待機してから再度確認します。マークファイルが見つかった場合、同期タスクが開始されます。

いいえ

なし

maxRetryTime

マークファイルの存在を確認するための再試行回数。デフォルト値は 60 です。再試行間隔は 1 分です。合計時間は 60 分です。

いいえ

60

csvReaderConfig

CSV ファイルを読み取るためのパラメーター設定。このパラメーターは Map 型です。CsvReader は CSV ファイルの読み取りに使用され、多くの構成オプションがあります。このパラメーターを構成しない場合、デフォルト値が使用されます。

いいえ

なし

fileFormat

読み取るファイルのタイプ。デフォルトでは、ファイルは CSV ファイルとして読み取られ、内容は論理的な 2次元テーブル構造に解析されます。このパラメーターを binary に設定すると、ファイルは純粋なバイナリ形式でコピーおよび転送されます。

このパラメーターは通常、FTP や OSS などのストレージシステム間でディレクトリ構造をピアツーピアレプリケーションするために使用されます。通常、このパラメーターを構成する必要はありません。

いいえ

なし

Writer スクリプトのデモ

{
    "type":"job",
    "version":"2.0",// バージョン番号。
    "steps":[
        { 
            "stepType":"stream",
            "parameter":{},
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"ftp",// プラグイン名。
            "parameter":{
                "path":"",// ファイルパス。
                "fileName":"",// ファイル名。
                "nullFormat":"null",// NULL 値。
                "dateFormat":"yyyy-MM-dd HH:mm:ss",// 時刻形式。
                "datasource":"",// データソース。
                "writeMode":"",// 書き込みモード。
                "fieldDelimiter":",",// 列区切り文字。
                "encoding":"",// エンコード形式。
                "fileFormat":""// テキストファイルタイプ。
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// エラーレコード数。
        },
        "speed":{
            "throttle":true,// throttle を false に設定すると、mbps パラメーターは有効にならず、レート制限は適用されません。throttle を true に設定すると、レート制限が適用されます。
            "concurrent":1, // 同時実行ジョブ数。
            "mbps":"12"// レート制限。1 mbps は 1 MB/s に相当します。
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Writer スクリプトのパラメーター

パラメーター

説明

必須

デフォルト値

datasource

データソースの名前。コードエディタはデータソースの追加をサポートしています。このパラメーターの値は、追加されたデータソースの名前と同じである必要があります。

はい

なし

timeout

FTP サーバーへの接続タイムアウト期間。単位:ミリ秒。

いいえ

60,000 (1 分)

path

FTP ファイルシステム内のパス。FTP Writer は、path で指定されたディレクトリに複数のファイルを書き込みます。

はい

なし

fileName

FTP Writer によって書き込まれるファイルの名前。このファイル名にランダムなサフィックスが追加され、各書き込みスレッドの実際のファイル名が作成されます。

はい

なし

singleFileOutput

FtpWriter によって書き込まれるファイル名は fileName によって制御されます。デフォルトでは、ランダムなサフィックスが追加され、各書き込みスレッドの実際のファイル名が作成されます。ランダムなサフィックスを追加したくない場合は、singleFileOutput を true に設定できます。出力ファイル名は、指定した完全なファイル名になります。

いいえ

false

writeMode

FTP Writer がデータを書き込む前のデータクリーンアップモード:

  • truncate: singleFileOutput が true の場合、書き込み前にディレクトリ内の同じ名前のファイルがクリアされます。singleFileOutput が false の場合、書き込み前にディレクトリ内の fileName プレフィックスを持つすべてのファイルがクリアされます。

  • append: 書き込み前に処理は行われません。Data Integration の FTP Writer は、fileName を使用して直接データを書き込み、ファイル名が競合しないようにします。

  • nonConflict: ディレクトリ内に fileName プレフィックスを持つファイルが存在する場合、エラーが報告されます。

はい

なし

fieldDelimiter

データを書き込む際のフィールド区切り文字。

はい、単一文字

なし

skipHeader

CSV 形式のファイルには、スキップする必要があるヘッダー行が含まれている場合があります。デフォルトでは、ヘッダー行はスキップされません。skipHeader は圧縮ファイルではサポートされていません。

いいえ

false

compress

gzip および bzip2 圧縮形式をサポートします。

いいえ

圧縮なし

encoding

ファイルのエンコード構成を読み取ることができます。

いいえ

utf-8

nullFormat

テキストファイルでは、標準の文字列を使用してヌルポインタを定義することはできません。Data Integration は、NULL 値がどのように表現されるかを定義するために nullFormat パラメーターを提供します。

たとえば、nullFormat="null" を設定し、ソースデータがヌルポインタである場合、Data Integration はそれをリテラル文字列 null (4 文字) にシリアル化します。

いいえ

なし

dateFormat

日付型のデータをファイルにシリアル化するために使用される形式。例:"dateFormat":"yyyy-MM-dd"

いいえ

なし

fileFormat

ファイルを書き込むための形式。有効な値は CSV と TEXT です。CSV は厳密な CSV 形式です。書き込むデータに列区切り文字が含まれている場合、CSV のエスケープ構文に従ってエスケープされます。エスケープ文字は二重引用符 (") です。TEXT 形式は、書き込むデータを列区切り文字で単純に区切り、データに区切り文字が含まれていてもエスケープは行いません。

いいえ

TEXT

header

header: 書き込むテキストファイル (CSV、TEXT などを含む) のヘッダー。コードエディタはヘッダー情報の構成をサポートしています。たとえば、"header":["id","name","age"] は、id、name、age が FTP ファイルの最初の行にヘッダーとして書き込まれることを指定します。

いいえ

なし

markDoneFileName

  • マークファイルの名前。同期タスクが完了した後、マークファイルが生成されます。このファイルは、同期タスクが成功したかどうかを示します。このパラメーターは絶対パスで構成する必要があります。

  • オフラインの定期タスクのシナリオでは、マークファイル名に スケジューリングパラメーター を含めることを推奨します。たとえば、マークファイル名を `/user/ftp/markDone_${bizdate}.txt` に設定できます。ここで、`${bizdate}` はスケジューリングパラメーターです。

いいえ

なし