私は最近、ある大きなテーブル (約 20 GB) から別のテーブルにデータをコピーするスクリプトを実行しましたが、そこでめちゃくちゃになり、datetime 列 ( と呼ばれるtimestamp
) の列値が varchar データ型 ( と呼ばれるcategory_name
) の別の列に保存されましたが、値は、ランダムな日時値 ( 、 、 など) に設定されているか、その範囲を持っていますtimestamp
。コピーしたテーブルも新しいデータを取得し続けます。ただし、新しいデータは破損していません。適切なデータが始まる行の正確な ID を特定しようとしています。有効な値の列は、アルファベット値または. 次のクエリを試しました-NULL
0000-00-00 00:00:00
0003-02-01 00:00:00
1990-12-00 00:00:00
category_name
NULL
SELECT * FROM table_name
WHERE `timestamp` IS NOT NULL
AND `timestamp` != "0000-00-00 00:00:00"
ORDER BY id;
timestamp
これは、すべての種類の値が列に保存されていることを発見したときです。
次にやってみた
SELECT * FROM table_name WHERE category_name REGEXP '[^a-zA-Z]' LIMIT 10;
これは機能しません。
SELECT * FROM table_name WHERE category_name REGEXP '[:alpha:]' LIMIT 10;
どちらも機能しません。
どんな助けでも本当に感謝します、ありがとう。category_name
日時文字列ではなく、列が有効なデータを取得し始めた場所から、ID/行のおおよその範囲を取得しようとしています。