フィールド区切り文字として SOH (ASCII 文字 1) を持ち、レコード区切り文字として STX (ASCII 文字 2) を持ついくつかのベンダー データがあります。ファイルを前処理し、それらの文字をより一般的なものに置き換えることなく、LOAD DATA INFILE でこのデータをロードすることは可能ですか?
5 に答える
わかった。
LOAD DATA LOCAL INFILE 'myfile.txt' INTO TABLE my_table
CHARACTER SET UTF8
FIELDS TERMINATED BY X'01'
LINES TERMINATED BY X'02'
(col1, col2, col3);
あなたは試してみるかもしれませんFIELDS TERMINATED BY _ascii 0x02
。で機能するかどうかはわかりませんがLOAD DATA INFILE
、で機能しますSELECT
(つまり、SELECT _ascii 0x61
「a」を生成します)。
mysqlimport を使用している場合、fields-terminated-by や lines-terminated-by などの 16 進値の形式は次のとおりです。
mysqlimport --local --user=username --password=secret --ignore-lines=4 --default-character-set=UTF8 --fields-terminated-by=0x01 --lines-terminated-by=0x02 -- verbose databasename thefile to import
文字列リテラル内で ascii char を直接送信してみることができます。接続に文字セットまたはエンコーディングが割り当てられていない場合、mysql は単純にそれを有効な文字列として受け入れる場合があります。ネットワーク接続を介して行うか、mysql クライアントにデータをパイプする必要があります。コンソールでそれを入力できるとは思いません。
X'01' で終了するフィールド
私のために働く