CSV
テーブルをリモートサーバーデータベースにアップロードしようとしましたが、エラーが発生しました。 RedHat LinuxディストリビューションではMySQL
を使用しています。 mycsv.csvファイルは次のようになります。
aa,ProductDescription,country,potato,L,11/18/2013,N,05
bb,ProductDescription,country,tomato,L,12/31/9999,N,05
cc,ProductDescription,country,curry,M,01/01/2014,Y,05
dd,ProductDescription,country,spicy,V,05/01/2015,N,
ご覧のとおり、最後の行はコンマ "、"で終わり、フィールドはありません(空であり、このようにするか、NULLに変更できる場合はさらに優れています)。ただし、次のクエリを入力すると、
LOAD DATA INFILE "/home/mycsv.txt"
INTO TABLE inbound.master_data
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n';
コマンドラインに次のエラーが表示される
エラーコード:1366。行4の列 'product_life_cycle'の整数値が正しくありません: ''
最後の行のカンマの後にnull値を設定する方法を誰かが知っていますか? (これが、テーブルをアップロードできない理由の問題だと思います)。事前にどうもありがとうございました。
テーブル定義:
CREATE TABLE master_data
( aa varchar(6) NOT NULL,
bb varchar(50) NOT NULL,
cc varchar(3) NOT NULL,
dd varchar(2) NOT NULL,
ee varchar(1) DEFAULT NULL,
ff varchar(20) NOT NULL,
gg varchar(1) NOT NULL,
hh int(11) DEFAULT NULL,
PRIMARY KEY (aa),
UNIQUE KEY aa_UNIQUE (aa)
) ENGINE=InnoDB
DEFAULT CHARSET=latin1 ;
NULL
を設定するには、テーブルにnullを許可する必要があります。
Null /欠損値の場合にデフォルト値に変更する場合は、以下のように個々の列名を指定する必要があります。
LOAD DATA INFILE "/home/mycsv.txt"
INTO TABLE inbound.master_data
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
(name,proddescr,country,thing,charA,datecol,charB,@VAL)
set numberCol=if(@VAL is null, 0, @VAL);
その0を他のデフォルト値に変更できます。
このブログ投稿には、他にも多くの興味深い データシナリオのロード が含まれています。 (コメントも確認してください)。
わかりました、あなたの助けに感謝します。最後の列を "varchar(10)"に設定するだけで問題を解決できました。整数列は空白値を受け入れることができないことがわかります。