5

データベースを作成し、スプレッドシートのcsvファイルからデータを読み込もうとしています。まだデータがありません。私が走るとき

LOAD DATA INFILE 'docs.csv' INTO list FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' (vendor, title, project, description, shelf); 

「 ERROR1406(22001):Data too long for column'vendor'atrow1 "」というメッセージが表示されます。ただし、行1のベンダーエントリの長さは6文字です。次のようにテーブルを作成しました。

CREATE TABLE list (
    autonumber  SERIAL,
    vendor      varchar(50),
    title       varchar(100),
    project     varchar(100),
    description     text,
    shelf       smallint UNSIGNED,
PRIMARY KEY(autonumber));

説明列の多くのエントリには、カンマとキャリッジリターン(スプレッドシートでAlt + Enter)があります。FIELDSTERMINATEDコマンドに\tを使用するのは正しいですか?キャリッジリターンは問題を引き起こしますか?

4

4 に答える 4

0

この列には値が長すぎます

このように50から100に変更してみてください

     CREATE TABLE list (
     autonumber  SERIAL,
     vendor      varchar(100),
     title       varchar(100),
     project     varchar(100),
     description     text,
     shelf       smallint UNSIGNED,
    PRIMARY KEY(autonumber));
于 2013-03-19T17:00:02.210 に答える
0

csv ファイルのエンコーディングが mysql 文字セットと同じでない可能性があります。これは、「エラー 1406 (22001): 行 1 の列 'vendor' のデータが長すぎます」につながる可能性もあります。

たとえば、mysql 文字セットが GBK で、csv ファイルが UTF-8 でエンコードされている場合、ロード時に同じエラーが発生します。

ファイルのエンコーディングを mysql 文字セットと同じに変更するだけです。

于 2015-07-11T02:56:49.060 に答える