|
Экспорт таблиц и запросов в JSON файл
|
|||
---|---|---|---|
#18+
Привет всем, не так давно написал один небольшой но весьма полезный класс , который позволяет сохранить в формате Json любую выбранную таблицу либо аксесовский "запрос". Сохраняется все одном файле JSON. В классической валидной спецификации. Таблиц и запросов в одном вызове может быть сколько угодно. Пользоваться очень просто и приятно. При нажатии на кнопку выполняется выгрузка данных из выбранных таблиц в один файл в формате JSON. Формат JSON классический. Вне зависимости от количества сохраняемых данных из таблиц в этом одном файле, распарсить назад можно любую . Проверяется очень просто без программирования (к примеру при распарсивании в Excel Power Query.) Код вызова экспортера очень прост : Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
В проекте на будущее - добавить выгрузку в XML. Это не сложно, но пока не нужно. Рабочий пример приложил. Если есть вопросы, с удовольствием отвечу. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2019, 20:47 |
|
Экспорт таблиц и запросов в JSON файл
|
|||
---|---|---|---|
#18+
Сергей Лалов, Используйте Option Explicit! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2019, 04:24 |
|
Экспорт таблиц и запросов в JSON файл
|
|||
---|---|---|---|
#18+
Панург, Ок, спс. Увлекся, не объявил часть переменных,.. предпродакшн так сказать ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2019, 12:57 |
|
Экспорт таблиц и запросов в JSON файл
|
|||
---|---|---|---|
#18+
Сергей Лалов Код: vbnet 1.
Я бы убрал проверку и, при необходимости, добавление слэша в метод объекта. Сергей Лалов можно сколько угодно добавлять таблиц (от одной до бесконечности) А удалить? А проверить наличие? Да и обработка повторного добавления (вместо тупого повторного вывода) была бы кстати. Также не нравится - отсутствие управления окавычиванием числовых значений (бывают случаи, когда оно необходимо), отсутствие управления делением на строки (хотя бы на уровне "запись на строку" - уж не говоря о полном pretty print). Ну и не стал смотреть, как оно отнесётся к служебным символам в блобе. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2019, 14:13 |
|
Экспорт таблиц и запросов в JSON файл
|
|||
---|---|---|---|
#18+
Akina Сергей Лалов Код: vbnet 1.
Я бы убрал проверку и, при необходимости, добавление слэша в метод объекта. Сергей Лалов можно сколько угодно добавлять таблиц (от одной до бесконечности) А удалить? А проверить наличие? Да и обработка повторного добавления (вместо тупого повторного вывода) была бы кстати. Также не нравится - отсутствие управления окавычиванием числовых значений (бывают случаи, когда оно необходимо), отсутствие управления делением на строки (хотя бы на уровне "запись на строку" - уж не говоря о полном pretty print). Ну и не стал смотреть, как оно отнесётся к служебным символам в блобе. Так слэш у меня отрабатывается в функции Encoding, немного не понял предложения. Удаление могу сделать, только зачем, по замыслу вы просто добавляете таблицы , которые вам нужны в файле JSON. Можно конечно из коллекции удалять , только нафиг нужно это ,не пойму. Наличие проверяется, попробуйте вставить имя несуществующей таблицы или запроса и посмотреть ошибку. Также проверяется таблица, если у нее 0 строк, вот кстати здесь наверное можно удалить и не добавлять в процедуру такую таблицу. Окавычивание числовых значений могу сделать за секунду, но Хабр не рекомендует)) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2019, 14:23 |
|
Экспорт таблиц и запросов в JSON файл
|
|||
---|---|---|---|
#18+
Akina, а все, со слэшем понял, да, можно забацать. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2019, 14:25 |
|
Экспорт таблиц и запросов в JSON файл
|
|||
---|---|---|---|
#18+
И последнее. Согласно RFC 7159 https://tools.ietf.org/html/rfc7159#section-8.1 JSON text SHALL be encoded in UTF-8, UTF-16, or UTF-32 . The default encoding is UTF-8, and JSON texts that are encoded in UTF-8 are interoperable in the sense that they will be read successfully by the maximum number of implementations; there are many implementations that cannot successfully read texts in other encodings (such as UTF-16 and UTF-32). Implementations MUST NOT add a byte order mark to the beginning of a JSON text. In the interests of interoperability, implementations that parse JSON texts MAY ignore the presence of a byte order mark rather than treating it as an error. Так что результирующий файл - не соответствует... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2019, 14:31 |
|
Экспорт таблиц и запросов в JSON файл
|
|||
---|---|---|---|
#18+
Akina И последнее. Согласно RFC 7159 https://tools.ietf.org/html/rfc7159#section-8.1 JSON text SHALL be encoded in UTF-8, UTF-16, or UTF-32 . The default encoding is UTF-8, and JSON texts that are encoded in UTF-8 are interoperable in the sense that they will be read successfully by the maximum number of implementations; there are many implementations that cannot successfully read texts in other encodings (such as UTF-16 and UTF-32). Implementations MUST NOT add a byte order mark to the beginning of a JSON text. In the interests of interoperability, implementations that parse JSON texts MAY ignore the presence of a byte order mark rather than treating it as an error. Так что результирующий файл - не соответствует... У меня на выходе в коллекциях строковые переменные, длинные, привести к нужному формату UTF-16 or UTF-32 тоже не проблема, оформлю дополнительным параметром в методе .setFilePathAndName . Где можно указать будет в какой кодировке пользователь хочет видеть файл и данные. Ок, спасибо за предложения! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2019, 14:36 |
|
Экспорт таблиц и запросов в JSON файл
|
|||
---|---|---|---|
#18+
Сергей Лалов, гуглить лень. Объясните пенсу, где и для чего этот формат используется? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2019, 19:01 |
|
Экспорт таблиц и запросов в JSON файл
|
|||
---|---|---|---|
#18+
ИВП Сергей Лалов, гуглить лень. Объясните пенсу, где и для чего этот формат используется? UTF-8 имеет преимущество в том случае, когда символы ASCII представляют большинство символов в блоке текста, потому что UTF-8 кодирует все символы в 8 бит (например, ASCII). Это также выгодно тем, что файл UTF-8, содержащий только символы ASCII, имеет ту же кодировку, что и файл ASCII. UTF-16 лучше, когда ASCII не преобладает, так как он использует 2 байта на символ, в первую очередь. UTF-8 начнет использовать 3 или более байтов для символов более высокого порядка, где UTF-16 остается всего на 2 байта для большинства символов. UTF-32 все возможные символы в 4 байтах. Это делает его довольно раздутым. Я не знаю никакого преимущества, чтобы использовать его. На самом деле Акина имеет в виду наверное, что в SQLевском BLOB желательно ужать посильней данные, чтобы бинарник поплотней был. ХЗ, честно, мой первоначальный вариант хранения JSON обычный Юникод , без выделения конкретного 8,16,32. Можно посмотреть в свойствах генерируемого файла JSON (он же txt) Я думаю проблемы как раз и начнуться, если я отдельно буду пользователю буду давать возможность выбора кодировки. Потому что помимо данных в файле, если парсить в базу сразу, с использованием SQL хрен знает в какой кодировке: 1) Поток 2) Сама база 3) Таблица Так то функций преобразований полно, к примеру вот: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39.
Мой первоначальный формат распарсили, и потестили уже во всех разрядных виндоуз и офисах. Ошибок нет, все норм. На сервер напрямую не пробовал, MS SQL нет, но MySQL сейчас попробую, с блобом, до дома доберусь только. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2019, 19:59 |
|
Экспорт таблиц и запросов в JSON файл
|
|||
---|---|---|---|
#18+
Сергей Лалов На самом деле Акина имеет в виду наверное ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2019, 22:24 |
|
|
start [/forum/topic.php?fid=45&fpage=24&tid=1610389]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
40ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
104ms |
get tp. blocked users: |
2ms |
others: | 311ms |
total: | 501ms |
0 / 0 |