1

CREATE TABLEと を使用して CSV ファイルを MySQL (5.1) にロードしていますLOAD DATA。テキスト型 (カテゴリ) であるが数値を含む列がいくつかあります。テーブルを作成するときにこれらの列を割り当てますVARCHAR(254)が、JDBC ドライバーは SQLException "行 1 の列 AgeGroup のデータが切り捨てられました" をスローします。

私のデータは次のようになります。

ID,AgeGroup
xxx,4
xxy,3
xyx,6
...

私のテーブル作成ステートメントは次のようになります

CREATE TABLE abc(ID VARCHAR(254), AgeGroup VARCHAR(254))

私のロードステートメントは次のようになります

LOAD DATA INFILE \myfile.csv\ INTO TABLE abc FIELDS TERMINATED BY ','

AgeGroup はテキスト データベースの列であるため、型変換の問題であると推測していますが、数値のように見えるものを貼り付けています。

LOAD DATAコマンドに列のデータ型を適用させ、ファイルの内容を変換させるにはどうすればよいですか?

公式の MySQL JDBC ドライバーを使用しています。

4

1 に答える 1

1

これがうまくいかないことに驚いています。つまり、文字列値を数値列に貼り付けるときにこの動作が予想されますが、その逆ではありません。

とにかく、v5.0で導入された構文の拡張を使用してLOAD DATA、生データから任意の式を計算できます。

LOAD DATA INFILE \myfile.csv\ 
INTO TABLE abc 
FIELDS TERMINATED BY ','
(@ID, @AgeGroup)
SET ID = @ID
,   AgeGroup = CAST(@AgeGroup AS UNSIGNED)

(参照:http ://dev.mysql.com/doc/refman/5.1/en/load-data.html

于 2010-01-06T22:19:54.210 に答える