0

テキストファイルからMySQLデータベースにいくつかの電子メールを挿入しようとしています。それらのいくつかは正しく挿入されていますが、そうでないものもあります。

これを実装するための私のアプローチはのようなものです。

$query = "LOAD DATA LOCAL INFILE 'email-list.txt' INTO TABLE $tablename FIELDS TERMINATED BY 'r'(email)";

$result = mysqli_query($connection, $query);

正しく挿入されていないいくつかの電子メールはのようなものです。

    xxxx7@yahoo.com
    xxx_xxxxx05@yahoo.com

これらはのように挿入されます。

    x
    xxx_xxxxx

私のアプローチの何が悪いのかを見て、これを適切に行うための可能なアプローチを提案してください。

4

3 に答える 3

2

これ...

FIELDS TERMINATED BY 'r'

もしかして...

FIELDS TERMINATED BY '\r'

???

ドキュメント

FIELDS句またはLINES句を指定しない場合、デフォルトは次のように記述した場合と同じです。

FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\'
LINES TERMINATED BY '\n' STARTING BY ''

(バックスラッシュはSQLステートメントの文字列内のMySQLエスケープ文字であるため、リテラルバックスラッシュを指定するには、値を1つのバックスラッシュとして解釈するために2つのバックスラッシュを指定する必要があります。エスケープシーケンス'\t'および'\n'はタブを指定しますそれぞれ、新行文字。)

于 2012-09-28T08:40:33.027 に答える
0

に置き換え FIELDS TERMINATED BY 'r'ます FIELDS TERMINATED BY '\r'

現在、rは終了文字として機能しているため、その後rはすべて削除されます。

于 2012-09-28T08:42:15.210 に答える
0
TERMINATED BY 'r'(email)"; 

文字「r」でメールを終了します

だからあなたが使用しているとき

cricket4877@yahoo.com

rの後のすべてを切り捨てているため、cのみが表示されます。

次のように変更する必要があります

TERMINATED BY '/r'(email);

PS実際のメールではなく、メールで構成されていることを願っています。

于 2012-09-28T08:42:23.293 に答える