2016-11-10 15 views
1

私は奇妙な問題があります。私は以下のコードを使用して、csvファイルの束をMySQLデータベースにインポートしています。MySQLのcsv importがcharectersを切り捨てています

@ECHO OFF 
setlocal enabledelayedexpansion 
IF /I "%CD%\" NEQ "%~dp0" PUSHD "%~dp0" 
mysql -e "DELETE FROM software_it.hardware" -u root 
FOR %%f IN ("*.csv") DO (
    set old=%%~dpnxf 
    set new=!old:\=\\! 
    mysql -e "load data local infile '"!new!"' into table software_it.hardware COLUMNS TERMINATED BY ',' IGNORE 1 ROWS" -u root 
    echo %%~nxf DONE 
) 

まず、csvファイルはCMD出力からのものです。 私は "UserName"と呼ばれるフィールドを持っていますが、私はそのフィールドでしか問題を見ていません。 ユーザ名は形式があります。

Trilegal \ {ユーザー名}今

を、最初にインポートした後、「\」がありませんし、名前のいくつかは、「後に不足している最初のcharecterを持っています\ "

この「\」の存在により何かが間違っていると推測しています。私は問題が私のテーブルにあると思ったので、私はインポートのGUI方法を使用しました。 GUIの方法はきれいにインポートされます。私は上記のコードを使用してインポートするために同じテーブルを使用し、同じ問題が再び戻ってきました。

私は、MySQLに新しいことがあるので、誰かが私がこの問題を理解するのを助けることができれば、それは素晴らしいことでしょう。

EDIT:

おかげで、 SS "/" から "\" に変更しました。

+0

CSVファイルの '/'には特別なことはありません。ファイルに余分なカンマがないことを確認してください。 – Barmar

+0

本当ですか?同じテーブルのGUIを使用して.csvファイルをインポートすると、ちょうど良い結果が得られます。上記のコードは、問題を引き起こしているものです。実際に私は間違っていて、それを編集します。それは "\"ではなく "/"である。だから私は\ bや\ rのような言葉をいくつか変更していると推測しています。 – SS97

+1

そのタイプミスは私が昨晩答えを得なかった理由かもしれません。 – Barmar

答えて

0

答えはエスケープ文字です。デフォルトでは、mySQLは "\"をエスケープ文字として扱います。

コードにESCAPED BY ''という行を追加し、デフォルトのエスケープパラメータは使用しません。

P .:はい私は自分自身に答えることを知っています。読んだ後にこの答えに来た。 :D

関連する問題