3

最初の列にhotel_idを含む(巨大な)csvファイルをインポートしようとしています。このコードでは、SQLテーブルのデータ型を整数にします。

load data local infile 'Images_20121121.csv' into table cimages fields terminated by '|' LINES terminated by '\n' (@var1, link, description) set hotel_id=CAST(@var1 AS UNSIGNED INTEGER);

しかし、これは機能しません(無効なデータ型エラーが発生します)、何かアイデアはありますか?

CSVファイルは次のようにフォーマットされています。

ˇ˛hotelid|url|description
4052465|https://carsolizeprod.blob.core.windows.net/images/hotels/a7ce966f-1c8d-4cdb-8050-0000132d2561.jpeg|
4020907|https://carsolizeprod.blob.core.windows.net/images/hotels/7230b738-4746-4751-8212-0000171a99c5.jpeg|
4263993|https://services.carsolize.com/images/hotels/f7f27005-3546-4347-8e18-000021a66962.jpeg|Exterior
4136518|https://services.carsolize.com/images/hotels/30ba8994-acd9-4993-9f74-0000359c309b.jpeg|Guest room
4305893|https://services.carsolize.com/images/hotels/c960b56a-bba6-4256-a0cd-00003f4be196.jpeg|Bar
4023461|https://services.carsolize.com/images/hotels/30388432-ffd2-4b2d-bb86-0000489cfbcf.jpeg|
4205330|https://services.carsolize.com/images/hotels/7473dde7-e7e3-4228-ab1d-000049e7ecfe.jpeg|

そして、私が得ている警告は次のとおりです。

| Warning | 1292 | Truncated incorrect INTEGER value: '' |

更新:実際にインポートされているvarchar-fieldsには、各文字の間にnul値が含まれていることがわかりました。したがって、これがおそらく問題の原因です(?)(バイナリの値を見ると、それぞれの間に00フィールドがあり、テキストとしてaNULbNULcNULどうすればこれを回避できますか?

4

2 に答える 2

2

クエリは問題ないようです。しかし、CSVファイルの内容は何ですか?(可能であればサンプルを提供してください)。

また、最初の行に列名が含まれている場合は、クエリを次のように変更することをお勧めします。

load data local infile 'Images_20121121.csv' into table cimages fields terminated by '|' LINES terminated by '\n' IGNORE 1 LINES (@var1, link, description) set hotel_id=CAST(@var1 AS UNSIGNED INTEGER);

また、この警告はもう少し意味があります。空白行の最初の列の内容を検証してみてください。そのような行が存在する場合は、それが原因である可能性があります。

別の提案として、あなたが示した小さなサンプルに同じクエリを適用してみてください、それは機能しますか?

以下のリンクをざっと見てください。LOADDATAがどのように機能するかについての洞察が得られるかもしれません。

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

于 2012-12-06T11:30:23.660 に答える
0

Carsolizeは、UTF-16でエンコードされたCSVファイルを提供します。fileこれは、CSVファイルに対してLinuxコマンドを実行することで確認できます。

LOAD DATA INFILE構文で説明されているように:

 ノート

ucs2、、、utf16またはutf32文字セットを使用するデータファイルをロードすることはできません。

iconvを使用してUTF-8に変換できます。

iconv -f UTF-16 -t UTF-8 Images_20121121.csv > Images_20121121_utf8.csv
于 2013-02-27T15:57:39.257 に答える