0

大きな csv ファイルを Mysql にインポートしようとしています。残念ながら、ファイル内のデータはスペースとタブの両方で区切られています。

その結果、テーブルにデータをロードするたびに、無数の空のセルができてしまいます (Mysql は 1 つのフィールド セパレータしか認識しないため)。インポートする前にデータを変更することはできません。

データの例を次に示します。

# 1574    1 1 1
$ 1587    6 6 2
$115 1878    8 9 23

(各行の 2 番目と 3 番目の値はタブで区切られています)

何か案は?

4

2 に答える 2

1

私の目標がファイルをインポートすることだけで ある場合、sed -i 's/,/ /g' *.txt心配する区切り文字を1つだけ作成するために使用します。

私は CSV が好きですが、コンマまたはスペースを含む二重引用符で囲まれた文字列がある可能性があります。この場合、これは完全ではありません。それでもインポートしますが、それらの文字列を変更するだけです。

その場合、本番環境で使用した別のアプローチは Stat/Transfer です。ファイルを変換し、複数の区切り文字を指定するシェル スクリプトを作成する構文言語があります。

正規表現区切り文字を使用したMySQLインポートCSVファイル

于 2013-10-09T01:33:16.490 に答える
1

あなたがLOAD DATA INFILEこれを試してみてください:

load data local infile 'c:/somefile.txt' into table tabspace 
columns terminated by ' '
(col1, @col23, col4, col5)
set col2 = left(@col23, instr(@col23,char(9))-1),
    col3 = substr(@col23,instr(@col23,char(9))+1);

セパレータはスペースであるため、2 番目の列には col2/col3 データが含まれていることに注意してください。これは変数 @col23 に割り当てられ、その後分割され、その部分が col2 と col3 に割り当てられます。

于 2013-10-09T01:33:23.323 に答える