Возникла потребность сохранять выгрузки из sql. Выгрузка содержит более млн строк, поэтому excel не катит. На примете csv (предпочтительней) или xml файлы. Для сохранения в csv пытался использовать код: [vba]
Код
CSVData = RecordsetToCSV(oRS, True)
Open "C:\MyFileName.csv" For Binary Access Write As #1 Put #1, , CSVData Close #1
Public Function RecordsetToCSV(oRS, _ Optional ShowColumnNames As Boolean = True, _ Optional NULLStr As String = "") As String Dim K As Long, RetStr As String If ShowColumnNames Then For K = 0 To oRS.Fields.Count - 1 RetStr = RetStr & ",""" & oRS.Fields(K).Name & """" Next K RetStr = Mid(RetStr, 2) & vbNewLine End If
[/vba] Но возникает ошибка "Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом" на строке: [vba]
[/vba]Да и кажется мне, что этот вариант будет оч долгим, по сравнению со следующим: Команда: [vba]
Код
myRecordset.Save "C:\yourFile.xml", adPersistXML
[/vba] Отлично, быстро сохраняет в файл, НО потом у меня ни как не получается прочитать этот файл .notepad++ открывает одни кракозябры, перепробовал много разных кодировок, ничего не получается. Пытался подключиться PowerQwery, так же безрезультатно, выдает ошибку.
Доброго дня.
Возникла потребность сохранять выгрузки из sql. Выгрузка содержит более млн строк, поэтому excel не катит. На примете csv (предпочтительней) или xml файлы. Для сохранения в csv пытался использовать код: [vba]
Код
CSVData = RecordsetToCSV(oRS, True)
Open "C:\MyFileName.csv" For Binary Access Write As #1 Put #1, , CSVData Close #1
Public Function RecordsetToCSV(oRS, _ Optional ShowColumnNames As Boolean = True, _ Optional NULLStr As String = "") As String Dim K As Long, RetStr As String If ShowColumnNames Then For K = 0 To oRS.Fields.Count - 1 RetStr = RetStr & ",""" & oRS.Fields(K).Name & """" Next K RetStr = Mid(RetStr, 2) & vbNewLine End If
[/vba] Но возникает ошибка "Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом" на строке: [vba]
[/vba]Да и кажется мне, что этот вариант будет оч долгим, по сравнению со следующим: Команда: [vba]
Код
myRecordset.Save "C:\yourFile.xml", adPersistXML
[/vba] Отлично, быстро сохраняет в файл, НО потом у меня ни как не получается прочитать этот файл .notepad++ открывает одни кракозябры, перепробовал много разных кодировок, ничего не получается. Пытался подключиться PowerQwery, так же безрезультатно, выдает ошибку.TD_MElec
Сообщение отредактировал TD_MElec - Понедельник, 21.03.2022, 10:54
Удалил все параметры из .GetString и дело пошло. В CSV сохраняет. НО большой массив данных, как раз на этапе .GetString зависает на очень продолжительное время (30+ минут).
Решил вопрос переводом RecordSet в array и от туда уже запись в текстовый файл. Опять таки есть "НО", процедура записи 3,7 млн строк занимает чуть более 4 минут, а процедура сохранения Recordset.Save "C:\yourFile.xml", adPersistXML чуть больше 10 сек. Явное преимущество. Но ни как не удается сделать xml читабельным, перепробовал все параметры .save
Может кто знает как правильно RecordSet сохранять в XML?
Удалил все параметры из .GetString и дело пошло. В CSV сохраняет. НО большой массив данных, как раз на этапе .GetString зависает на очень продолжительное время (30+ минут).
Решил вопрос переводом RecordSet в array и от туда уже запись в текстовый файл. Опять таки есть "НО", процедура записи 3,7 млн строк занимает чуть более 4 минут, а процедура сохранения Recordset.Save "C:\yourFile.xml", adPersistXML чуть больше 10 сек. Явное преимущество. Но ни как не удается сделать xml читабельным, перепробовал все параметры .save
Может кто знает как правильно RecordSet сохранять в XML?TD_MElec