0

100,000行の大きなcsvファイルをMySqlテーブルにインポートしようとしています。エラーが発生しました:

SQL構文にエラーがあります。'Dell'、''、 '1610 Keeneland Dr'、''、'Helena'、 '205-871-8006'、''、 '35080の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。 -4114')'1行目

コードをクエリからエコーに変更する:

'428A1B35-6913-497C-907A-BFB9C4983B04'、'Andrew Collins O'Dell'、''、 '1610 Keeneland Dr'、''、'Helena'、 '205-871-8006'、''、 '35080- 4114')

一部のフィールドの間に余分な引用符(2つのシングルティック)とコンマがあることがわかります。多分それは空のフィールドだと思いましたが、サイコロはありませんでした。これが私のコードです:

if (($handle = fopen("accounts.csv", "r")) !== FALSE)
{
    while (($data = fgetcsv($handle, ",")) !== FALSE)
    {
        try
        {
            mysql_query("INSERT INTO accounts (id, name
            ,billing_address_street
            , billing_address_city, billing_address_state, billing_address_postalcode
            , phone_office, phone_alternate
            , website) values ('".trim(com_create_Guid(), '{}')
            ."', '".$data[1]."', '".$data[46]."', '".$data[48]
            ."', '".$data[49]."', '".$data[50]."', '".$data[8]
            ."', '".$data[9]."', '".$data[52]."')")or die(mysql_error());
        }
        catch(MySqlException $e)
        {
            $e.getMessage();
        }
    }
    fclose($handle);
}

fgetcsv関数にフィールドエンクロージャーパラメーター'"'を入れてみました。一部のインデックスで未定義のオフセットが発生します。したがって、問題は、余分なティックとコンマが何から来ているのかを誰かが知っているかどうかです。

補足:250レコードを挿入していますが、名前の後のすべてが1列または2列ずれていますが、これはもちろん余分な目盛りとコンマが原因です。

4

1 に答える 1

2

関数を使用する必要があります

mysql_real_escape_string( $data[$x], $dblink )

データ部分用;-)

于 2013-01-25T20:34:42.070 に答える