2

LOADDATAINFILEを使用してcsvファイルをインポートしています

csv列はNAME、TYPE、STATUSです

私のテーブル構造は

名前:varchar
タイプ:Varchar
ステータス:Tinyintのデフォルト値1

私はこのstmtを使用します:

LOAD DATA INFILE '/var/www/names.csv' 
INTO TABLE users FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES 

上記のステートメントを使用する場合、各行にステータス値を1として挿入する必要がありますが、同じものを挿入していません。お知らせ下さい。

4

2 に答える 2

9

ファイルをロードするとき、MySQL は、欠落している列にデフォルト値がある場合でも、特に指定しない限り、宛先テーブルと同じ数の列があると想定します。したがって、LOADステートメントに列リストを指定し、 の値にリテラル 1 を指定しますSTATUS

LOAD DATA INFILE '/var/www/names.csv' 
INTO TABLE users 
  FIELDS TERMINATED BY ',' 
  ENCLOSED BY '"' 
  LINES TERMINATED BY '\n' 
  IGNORE 1 LINES 
  (`name`, `type`, 1)

SET句を使用して行うこともできます。

LOAD DATA INFILE '/var/www/names.csv' 
INTO TABLE users 
  FIELDS TERMINATED BY ',' 
  ENCLOSED BY '"' 
  LINES TERMINATED BY '\n' 
  IGNORE 1 LINES 
  (`name`, `type`)
  SET `status` = 1
于 2012-06-05T12:52:50.977 に答える
0

クエリを実行した後、次を使用して警告がないか確認します

show warnings

数値データ型のデフォルト値は 0 で、文字列のデフォルト値は '' です。

したがって、テーブルの作成中にデフォルト値 1 を設定する必要があります

create table tableName
(
name nvarchar(100) not null,
type nvarchar(100) not null,
status smallint default 1
);
于 2012-06-05T12:49:52.390 に答える