sql >> データベース >  >> RDS >> Oracle

SQLLDR を使用して区切りデータをロードする際のデータ フィールドのスキップ

    スキップする列を FILLER として定義します。通常、制御ファイル内の列の順序は、データファイル内の列の順序であることに注意してください。名前がテーブルの列と一致する場合、そこに移動します。

    ...
    (
      f1 CHAR,  -- 1st field in the file, goes to column named f1 in the table
      X FILLER, -- 2nd field in the file, ignored
      f3 CHAR,  -- 3rd field in the file, goes to column named f3 in the table
      f2 CHAR   -- 4th field in the file, goes to column named f2 in the table
    )
    

    つまり、制御ファイル内の列の順序は、テーブル内の順序ではなく、データ ファイル内の列の順序と一致します。これは、順序ではなく名前で照合されます。

    編集 - 説明のためにいくつかのコメントを追加しましたが、実際のファイルのその位置に置くことはできないと思います。完全な例については、以下を参照してください:

    テーブルを作成:

    CREATE TABLE T1
    (
      F1  VARCHAR2(50 BYTE),
      F2  VARCHAR2(50 BYTE),
      F3  VARCHAR2(50 BYTE)
    );
    

    制御ファイル example.ctl:

    load data 
    infile *
    truncate
    into table t1
    fields terminated by '|' trailing nullcols
    (
    f1 CHAR,
    x FILLER,
    f3 CHAR,
    f2 CHAR
    )
    BEGINDATA
    a|b|c|d
    w|x|y|z
    

    実行:

    C:\temp>sqlldr userid=login/[email protected] control=example.ctl
    SQL*Loader: Release 11.2.0.1.0 - Production on Wed Apr 22 11:25:49 2015
    Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
    Commit point reached - logical record count 2
    

    表から選択:

    これが役に立てば幸いです。




    1. 一部のユーザーは、mysqlに複数の個別のレコードを持っています

    2. PostgreSQLの誤った並べ替え

    3. mysql datetimeでjqueryカウントダウンタイマーを使用していますか?

    4. bpcharが使用されているh2データベースでユニットテストを実行するにはどうすればよいですか?