У меня большой файл с десятками тысяч строк, содержащих данные, разделенные |
для массовой вставки в мою базу данных.
Я знаю, что должно быть, скажем, 10 столбцов.
Поскольку некоторые данные могут случайно содержать разделитель |
, могут возникнуть ошибки, поскольку количество столбцов для этой строки не будет совпадать.
Я пытаюсь подсчитать количество строк, содержащих более 20 столбцов, чтобы убедиться, что файл действителен:
@ECHO OFF
set /a count=0
FOR /f "tokens=10,* delims=|" %%i in (%1) DO (
if not "%%j"=="" (
set /a count+=1
)
)
echo %count%
:eof
Это работает хорошо ... но только если не любое поле пусто, и в этом случае счет смещается, потому что delims
обрабатывает разделители как пробелы
e.g
1|2|3|4|5|6|7|8|9|10 => cool, 10 columns
1|2|3|4|5|6|7|8|almost got|you|10 => found 11 columns
1|2|3|4||6|7|8|got|you|10 => damn, reports as 10 columns
Как решить эту проблему, используя только командную строку / пакет Windows?
Примечание. Я не могу изменить файл, чтобы заключить данные в кавычки или что-то в этом роде.