web-dev-qa-db-ja.com

データをテーブルにロードするときに空の行を無視する

MySQLでCREATE TABLEステートメントを使用して、22列のテーブル(tbldemo)を作成しました。 LOAD DATA INFILEステートメントを使用して.csvファイルからデータを挿入しようとすると、次のエラーが発生します。

エラーコード:1261。行11513にすべての列のデータが含まれていません

行全体がnullまたは空である行を無視するにはどうすればよいですか?

これは私が.csvからデータをロードするために使用したものです:

LOAD DATA INFILE 'D:/Singapore/rau_sales_order.csv' INTO TABLE tbldemo
 FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'  LINES TERMINATED BY '\r\n'
 IGNORE 1 LINES;

.csvファイルを開き、nullでフィルタリングしてファイルからデータを削除したくありません。代わりに、クエリで直接フィルタリングを行います。これを達成する方法はありますか?

3
Deepesh
load data local infile 'C:\\temp\\abc.csv'
into table table_name
fields terminated by ',' ignore 1 lines 
(@col1,@col2,@col3,@col4)
set 
table.column_name = @col1,
table.column_name = @col2,
table.column_name = @col3,
table.column_name = @col4;

(@ col1、.....)列数をcsvファイルの実際の列数に拡張します。これらの列番号をテーブルの列に関連付けます。それが行われます。

1
Priyanshu

これらは、これに対処するためのいくつかのオプションです。

  • Auto_incremental IDを使用してテーブルを作成します。または
  • ロードする前に、問題のある行をファイルから削除します(例:grep -v '^\( *,\)* *$' file > newfile