2016-09-22 19 views
0

mysqlテーブルにcsvファイルをインポートしようとしていますが、mysqlにインポートする前に最初の2文字を削除する必要があります。 これは私なステートメントです:csvをmysqlにインポート中にカラムの最初の2文字を無視する

string strLoadData = "LOAD DATA LOCAL INFILE 'E:/park/Export.csv' INTO TABLE tickets FIELDS terminated by ',' ENCLOSED BY '\"' lines terminated by '\n' IGNORE 1 LINES (SiteId,DateTime,Serial,DeviceId,AgentAID,VehicleRegistration,CarPark,SpaceNumber,GpsAddress,VehicleType,VehicleMake,VehicleModel,VehicleColour,IssueReasonCode,IssueReason,NoticeLocation,Points,Notes)"; 

IssueReasoncode' has data like 'LU12' ,しかし、私は、それはそれだけでは整数ではなく英数字を持つべきである最初の2つの文字を削除する必要があります。 その列から'LU'を削除する必要があります。

left(IssueReasonCode +' '2).この列はvarchar(45)であり、大きなデータがあるため変更できません。

おかげ

答えて

1

LOAD DATA INFILEは、あなたが(q.v. here)でそれを読むと、各列のデータに対して機能を実行する能力を持っています。あなたはIssueReasonCode列から最初の2つの文字を削除したい場合はあなたのケースでは、あなたが使用できます。

RIGHT(IssueReasonCode, CHAR_LENGTH(IssueReasonCode) - 2) 

は、最初の2つの文字を削除します。このような列マッピングは、LOAD DATAステートメントの末尾にSETを使用して指定します。あなたの文は次のようになります。

LOAD DATA LOCAL INFILE 'E:/park/Export.csv' INTO TABLE tickets 
FIELDS terminated by ',' 
ENCLOSED BY '\"' 
LINES TERMINATED BY '\n' 
IGNORE 1 LINES 
(SiteId, DateTime, Serial, DeviceId, AgentAID, VehicleRegistration, CarPark, SpaceNumber, 
GpsAddress, VehicleType, VehicleMake, VehicleModel, VehicleColour, IssueReasonCode, 
IssueReason, NoticeLocation, Points, Notes) 
SET IssueReasonCode = RIGHT(IssueReasonCode, CHAR_LENGTH(IssueReasonCode) - 2) 
+0

私はあなたなステートメントを試してみましたが、私は、コマンドの実行中に発生した致命的なエラーをgetttingています。 –

+0

@KiranV両方の答えが理想的に機能するはずです。正確にコピーしましたか?セミコロン、見積もりなどがありませんか? –

+0

申し訳ありませんが私の間違いcsvファイルが壊れていた..問題は解決しました....それは完璧に働いてくれました... –

0

thisを参照して、この例を引用し、あなたはそれがSET句の

ユーザー変数は、いくつかの中で使用することができます動作するかどうかを確認するには、以下を試すことができます方法。 次の例では、最初の入力列をt1.column1の値 に直接使用し、2番目の入力列を の値t1.column2:

に使用する前に除算操作を受けるユーザー変数 に割り当てます

LOAD DATA INFILE 'file.txt' INTO TABLE t1(column1、@ var1)SET column2 = @ var1/100;

string strLoadData = "LOAD DATA LOCAL INFILE 'E:/park/Export.csv' INTO TABLE tickets FIELDS terminated by ',' ENCLOSED BY '\"' lines terminated by '\n' IGNORE 1 LINES (SiteId,DateTime,Serial,DeviceId,AgentAID,VehicleRegistration,CarPark,SpaceNumber,GpsAddress,VehicleType,VehicleMake,VehicleModel,VehicleColour,@IRC,IssueReason,NoticeLocation,Points,Notes) SET IssueReasonCode = substr(@IRC,2) ;"; 
+0

私はあなたの文章を試して、コマンド実行中に致命的なエラーが発生しました。 –

+0

私がチェックするために使用できるトレースはありますか? –

+0

申し訳ございませんが、あなたの前のコメントを遅く読んでください! –

関連する問題