MSAccess - более эффективный способ удаления проблемных персонажей? - PullRequest
0 голосов
/ 04 марта 2019

Мне нужно удалить / заменить несколько проблемных символов в импортированной таблице.Следующее - мой текущий подход;хорошо для <5K наборов записей, но мучительно медленно для больших наборов> 20K записей.

Я предполагаю, что есть более эффективные способы, чем выполнение каждой записи и выполнение Replace:

    Set rs = db.OpenRecordset("TblMatch")
    Do While Not rs.EOF
        strDesc = Replace(Nz(rs!DESC), Chr(39), Chr(39) & Chr(39))
        strDesc = Replace(Nz(rs!DESC), Chr(34), "")
        strDesc = Replace(Nz(rs!Validated_DESC), Chr(39), Chr(39) & Chr(39))
        strDesc = Replace(Nz(rs!Validated_DESC), Chr(34), "")
        rs.MoveNext
    Loop

Будет ли следующее более эффективным?

    db.Execute "UPDATE TblMatch SET TblMatch.Desc = Replace([Desc],Chr(39),Chr(39) & Chr(39));"

Любые предложения или указатели?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Вы можете легко протестировать, чтобы выяснить, какой подход лучше, хотя я предполагаю, что использование запросов будет быстрее.

Тем не менее, сделайте это в Excel - он будет жевать на 20 000 строк быстрее, чем вы можете моргнуть,Вы можете импортировать / экспортировать лист с небольшим количеством VBA.

Используйте функции REPLACE и SEARCH, например, =IF(SEARCH(CHAR(23),A1)>0, REPLACE(A1,SEARCH(CHAR(23),A1),1," "), A1)

0 голосов
/ 04 марта 2019

Выполнение оператора SQL почти всегда будет быстрее, чем повторение и изменение содержимого отдельных записей в наборе записей с использованием VBA.

Таким образом, вы можете выполнять операции вашего кода, используя следующий SQL update оператор:

update 
    tblmatch t
set 
    t.desc = replace(replace(t.desc, "'", "''"), """", ""), 
    t.validated_desc = replace(replace(t.validated_desc, "'", "''"), """", "")
where 
    t.desc like "*['""]*" or t.validated_desc like "*['""]*"

Хотя, поскольку вы заменяете символ дублированием самого себя (' на ''), вам нужно быть осторожным, чтобы не выполнить вышеупомянутый более одного разав вашем наборе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...