|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Прочие БД - [решено] SQLite3, сделать выборку из большого файла csv |
|
|
Прочие БД - [решено] SQLite3, сделать выборку из большого файла csv
|
Старожил Сообщения: 211 |
Профиль | Отправить PM | Цитировать Доброго времени суток! Есть большая таблица csv 1.2ГБ, которая постоянно дополняется данными в конец таблицы. В таблице 52 столбца и уже более 20 миллионов строк. Мне нужно сделать выборку из этой таблицы по списку из AD самых свежих данных, по имени и дате. Я ранее пытался сделать это с помощью powershell и даже сделал, но производительность очень мала и ждать приходится более 8 часов. Мне на этом форуме сразу посоветовали работать с таблицей как с базой данных, я сопротивлялся, но мне прислали еще несколько таблиц больших размеров и мне все же придется научиться работать с базами. Как мне и посоветовали начать с SQLite3. Скачал, распаковал, запустил, создал базу test, импортировал туда свою таблицу. Через sqlitestudio видно, что все названия столбцов импортировались удачно, так же как и данные. В базе есть два столбца, по которым ориентируюсь: Data, System_Unit_Name. Нужно выбрать уникальное значение из System_Unit_Name с самой старшей датой из столбца Data, далее экспортировать всю строку (все 52 столбца) в таблицу или другую базу, чтобы далее работать с ней. Далее уже наверное буду скриптом сравнивать с AD и вылавливать нужные данные. Возможно с базами не так работают, но это мой первый опыт. В идеале я хочу завернуть все в скрипт powershell, чтобы полностью автоматизировать процесс. Проблема в том, что я не могу самостоятельно составить такой запрос. Надеюсь кто-нибудь поможет, ну или вообще я все неправильно придумал и это не осуществимо.
|
|
Отправлено: 17:38, 16-09-2021 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать 1. А поле Data у Вас — дата? Или как в csv — строка? Вообще, чтобы:
Цитата Griboed0ff:
2. Цитата Griboed0ff:
В первом случае проблем нет (я и в параллельной теме сделал для текстовых файлов, всё никак не допишу текстовку; ответите здесь на вопросы — допишу): SELECT DISTINCT * INTO [ResultTable] FROM [SourceTable] WHERE Ping = 'Yes' AND Data = (SELECT MAX(Data) FROM [SourceTable]) AND System_Unit_Name IN (SELECT MachineName FROM [MachineNames]) ORDER BY System_Unit_Name
|
||
Отправлено: 21:41, 16-09-2021 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Цитата Iska:
Цитата Iska:
примерно вижу это так: Приложил скрин и пример таблицы как ее загрузил в базу и пример желаемого результата. Получается выбирать из поля Ping значения все кроме NO, потому что поле иногда бывает пустым, но данные присутствуют. Выбрать все значения для одного System_Unit_Name из таблицы AD_list, куда поместится список имен AD. Выбрать старшую строку по дате из прошлой выборки. Поместить в таблицу Кстати подумал, что если из базы удалить дубли то объем данных порядком сократиться. Например, есть дублирующиеся строки, где все данные в столбцах одинаковые. Т.е. это одна и та же строка скопированная 2-100 раз. Так же по данным видно, что информация редко меняется, кроме поля дата. Если удалить дубли по всем полям кроме дата и оставить только самые младшие значения по дате, то исторические данные и изменения останутся, а база похудеет и будет весить несколько метров, а то сейчас 700 метров. |
|||
Последний раз редактировалось Griboed0ff, 17-09-2021 в 15:37. Отправлено: 15:31, 17-09-2021 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Griboed0ff:
Если сие возможно — подготовьте новый образец файла 1.csv и выложите его в ту тему. Цитата Griboed0ff:
Цитата Griboed0ff:
Если будет возможность поизучать теория и принципы построения реляционных баз данных — сделайте это. |
|||
Отправлено: 23:10, 17-09-2021 | #4 |
Ветеран Сообщения: 1264
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Цитата Griboed0ff:
|
|||
Отправлено: 15:33, 19-09-2021 | #5 |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Цитата El Sanchez:
Импортировал в базу "all_pc_info", таблицу с данными "all_pc", из которых и надо сделать выборку, так же импортировал в таблицу "AD_list" список имен АД в один столбик (название столбца System_Unit_Name). Далее пробовал делать запрос, но ничего не происходит. Для наглядности, что в базе и скрин команд прикладываю. |
||
Отправлено: 10:51, 20-09-2021 | #6 |
Ветеран Сообщения: 1264
|
Профиль | Отправить PM | Цитировать Цитата Griboed0ff:
|
|
Отправлено: 11:42, 20-09-2021 | #7 |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать Цитата El Sanchez:
|
|
Отправлено: 13:32, 20-09-2021 | #8 |
Ветеран Сообщения: 1264
|
Профиль | Отправить PM | Цитировать Цитата Griboed0ff:
|
|
Отправлено: 17:04, 20-09-2021 | #9 |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать Цитата El Sanchez:
|
|
Отправлено: 18:03, 20-09-2021 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
PowerShell - Создание переменчивой переменной из csv файла | Dillaname | Скриптовые языки администрирования Windows | 4 | 26-02-2021 15:38 | |
CMD/BAT - Создание .bat файла для выборки строк из .csv файла в .xlsx | GODolubOFF | Скриптовые языки администрирования Windows | 10 | 14-12-2015 15:34 | |
PowerShell - [решено] Добавление информации из csv-файла в AD с обработкой | IvanXXL | Скриптовые языки администрирования Windows | 12 | 23-07-2014 10:49 | |
CMD/BAT - [решено] Периеминование файла doc.csv в Документ_дата_время.csv | kagorec | Скриптовые языки администрирования Windows | 2 | 29-03-2014 18:40 | |
PowerShell - [решено] Перекодировка файла .csv из windows-1251 в utf-8 | sea707 | Скриптовые языки администрирования Windows | 2 | 02-09-2012 21:41 |
|