我最近运行了一个脚本,将数据从一个大表(大约 20 GB)复制到另一个,我搞砸了,日期时间列(称为timestamp
)的列值被保存到另一个具有 varchar 数据类型(称为category_name
)的列中,而timestamp
值已设置为NULL
或具有一系列随机日期时间值(如0000-00-00 00:00:00
、0003-02-01 00:00:00
、1990-12-00 00:00:00
等)。我复制到的表也不断获取新数据。然而,新数据并未损坏。我正在尝试确定我的好数据开始的行的确切 ID。请注意,有效值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
列开始获取有效数据而不是日期时间字符串的位置获取大概的 ids/rows 范围。