Puede que estés complicando demasiado la sentencia al exagerar en el uso del caracter escape (\).
Lo que tienes que lograr es que la sentencia usada tenga finalmente esto:
Código sql:
Ver originalLOAD DATA LOCAL INFILE 'web.txt'
REPLACE INTO TABLE `datos`
FIELDS TERMINATED BY ';'
ESCAPED BY '\\' LINES TERMINATED BY '\r\n';
y con tantos escapes, el string puede que no se esté construyendo bien. Pon algún stop que te muestre qué es lo que contiene la variable que envías ($sql), para ver si el texto final es realmente el que debe llegar.
Otro tip: Esta es sección de Base de Datos, procura no poner código de programación (ningún tipo de código, ni PHP), porque los moderadores pueden borrartelo.
Pon directamente las sentencias resultantes de la base, porque es en ellas donde se vé si el error es de Base de datos.
Para PHP está su foro específico.