現在の位置: ホーム> 最新記事一覧> CSVデータのインポートにおけるmysqli :: get_warningsの適用の例

CSVデータのインポートにおけるmysqli :: get_warningsの適用の例

gitbox 2025-05-26

PHPを使用してCSVファイルをMySQLデータベースにインポートする場合、一部のデータ形式の問題、キーの複製、データの切り捨て、その他の警告が発生することがよくあります。これらの警告は、インポートの障害を直接引き起こすものではありませんが、データの完全性と正しさに影響します。インポートプロセス中に発生する潜在的な問題を正確に把握するために、 MySQLI :: get_warnings関数は、インポートプロセスのトラブルシューティングと最適化のための重要なツールになりました。

mysqli :: get_warningsとは何ですか

mysqli :: get_warningsは、最新のデータベース操作によって生成された警告情報を取得するために使用されるPHPのMySQLIクラスのメソッドです。データベースの実行中に生成された警告を読み取って分析できる警告オブジェクトのチェーンを返します。

CSVのインポートのシナリオでは、これらの警告メッセージは問題行を見つけ、CSVファイルまたはデータベース構造を時間内に調整し、データの例外を回避するのに役立ちます。

CSVをMySQLにインポートするための一般的なプロセス

  1. CSVファイルのコンテンツをお読みください。

  2. データの各行を解析します。

  3. 挿入またはロードデータインフィルを使用して、データベースにデータを書き込みます。

  4. mysqli :: get_warningsに電話して、実行中に警告を受けます。

  5. 警告結果に基づいて対応する処理またはログを実行します。

コード例:PHPでCSVをインポートし、警告を取得します

次の例は、 PHPでCSVをインポートし、 get_warningsを使用してPHPを使用して警告を取得する方法を示しています。

 <?php
$mysqli = new mysqli("gitbox.net", "username", "password", "database");

if ($mysqli->connect_errno) {
    die("接続に失敗しました: " . $mysqli->connect_error);
}

$csvFile = fopen("data.csv", "r");
if (!$csvFile) {
    die("開くことができません CSV 書類");
}

$lineNumber = 0;
while (($data = fgetcsv($csvFile)) !== false) {
    $lineNumber++;
    // 仮定 CSV 3つの列があります: id, name, email
    $id = $mysqli->real_escape_string($data[0]);
    $name = $mysqli->real_escape_string($data[1]);
    $email = $mysqli->real_escape_string($data[2]);

    $sql = "INSERT INTO users (id, name, email) VALUES ('$id', '$name', '$email')";
    if (!$mysqli->query($sql)) {
        echo "第 $lineNumber ラインの挿入に失敗しました: " . $mysqli->error . "\n";
    } else {
        // 警告情報を取得します
        if ($mysqli->warning_count > 0) {
            $warning = $mysqli->get_warnings();
            while ($warning) {
                echo "第 $lineNumber 警告: ({$warning->errno}) {$warning->message}\n";
                $warning = $warning->next();
            }
        }
    }
}

fclose($csvFile);
$mysqli->close();
?>

典型的な警告分析

  • 列のデータが切り取られたデータ
    これは、インポートされたデータの長さがフィールドの長さを超えていることを示しており、データが切り捨てられる可能性があります。 CSVの対応するフィールドの長さまたはデータベースフィールドタイプが妥当かどうかを確認することをお勧めします。

  • 重複するエントリ
    インポートされたデータは、一意性の制約に違反しており、主要なキーまたはユニークなインデックスの競合である可能性があります。複製データをチェックして処理する必要があります。

  • 間違った日時値
    日付時間形式が正しくないため、挿入障害または例外が生じます。 CSVの対応するフィールド形式を確認して、MySQL要件に準拠していることを確認してください。

要約します

MySQLI :: get_Warningsを使用すると、CSVのインポート中に潜在的な警告情報をリアルタイムでキャプチャおよび出力でき、より詳細なエラー診断とデータ品質制御を実現できます。これにより、データのインポートの安定性が向上するだけでなく、その後のデータクリーニングと修正も促進します。

これらの警告を適切に処理することにより、インポートされたデータの整合性と精度を確保することが、システムデータの信頼性を改善する重要なステップです。