Как лучше организовать и хранить результат SQL-запроса
Если запросы на выборку, то DataReader должен быть быстрее. Запросы на изменение данных делать через EF, не используя модель, вообще бессмысленное занятие. Так что да, делайте как вы написали. Сохранять можно в DataSet или dynamic. Но лучше в DataSet.
24 окт 2018 в 7:21
@Yaroslav Вообще EF вполне умеет в raw sql
24 окт 2018 в 7:23
через мой вариант я могу и изменить данные, ибо это же практически чистый sql — а если пользователь напишет drop database ?
24 окт 2018 в 7:30
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Entity Framework — это ORM, т.е. средство для установления соответствия между базами данных и объектно-ориентированным кодом для работы с ними. Вся суть ORM — это как раз меньше писать руками SQL. Если вам не нужен объектно-ориентированный код для доступа к данным, а нужен произвольный SQL запрос, естественно EF «не будет удобен» (да и просто не нужен). Он хоть и позволяет выполнять SQL-запросы, но только возвращающие объекты модели, а не произвольные. Используйте стандартные средства ADO.NET.
Хранить результаты можно в DataTable (Пример).
Отслеживать
ответ дан 24 окт 2018 в 8:16
MSDN.WhiteKnight MSDN.WhiteKnight
20.2k 6 6 золотых знаков 37 37 серебряных знаков 81 81 бронзовый знак
- c#
- sql
-
Важное на Мете
Связанные
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Сохранение инструкций SQL
В большинстве выполняемых практических занятий требуется сохранять определенные запросы в таблице SQL как файл .sql .
Чтобы сохранить инструкции SQL, выполните следующие действия:
- В меню File (файл) выберите пункт Save (сохранить) или Save as (сохранить как) (при переименовании текущего сценария SQL) либо щелкните правой кнопкой мыши рабочую таблицу SQL и выберите пункт Save File (сохранить файл). Можно также использовать сочетание клавиш [ CTRL ] + [S].
- В диалоговом окне сохранения введите соответствующее имя файла. Убедитесь в том, что указано расширение SQL либо для типа файла выбрано значение SQL Script (*.sql). Нажмите кнопку Save (сохранить).
- Рабочая таблица SQL будет переименована в файл с именем, указанным при сохранении сценария. Будьте внимательны и не вводите новые инструкции SQL в той же рабочей таблице. Для работы с другими запросами SQL откройте новую рабочую таблицу.
После сохранения содержимого в файле в поле Enter SQL Statement (ввод инструкции SQL) отобража- ется страница с вкладками содержимого файла. Одновременно может быть открыто несколько файлов. Каждый файл отображается как страница с вкладками.
Путь к сценарию
Можно выбрать путь по умолчанию для просмотра и сохранения сценариев. В разделе настроек, открываемом с помощью последовательности команд Tools > Preferences > Database > Worksheet Parameters, введите значение в поле Select default path to look for scripts (выбор пути по умолчанию для сценариев).
Далее: Изменение пароля
Как в MySQL результаты запроса сохранить в новую таблицу
В MySQL в одном SQL запросе можно создать новую таблицу и сохранить в неё результаты MySQL запроса (результаты по другой таблице. Либо можно сохранить результаты поиска по таблице в другую, уже существующую таблицу.
Как в MySQL сохранить результаты MySQL запроса в новую таблицу
Используйте следующую конструкцию:
CREATE TABLE new_table SELECT //здесь идёт MySQL запрос (поиск по таблице)
CREATE TABLE `db2`.`new_table` SELECT `column` FROM `db1`.`old_table` WHERE `row` LIKE '%search string%' ORDER BY `column` DESC;
Обратите внимание, что часть, которая начинается с SELECT, представляет по синтаксису обычный запрос поиска SELECT. То есть вы можете протестировать ваш запрос без создания новой таблицы:
SELECT `column` FROM `db1`.`old_table` WHERE `row` LIKE '%search string%' ORDER BY `column` DESC;
И если он сработал правильно, то добавьте этот запрос после «CREATE TABLE new_table».
Как сохранить результаты MySQL запроса с несколькими столбцами в новую таблицу
Если вы хотите, чтобы в новую таблицу было сохранено несколько столбцов, то перечислите их после SELECT:
CREATE TABLE `db2`.`new_table` SELECT `column1` , `column2` FROM `db1`.`old_table` WHERE `row` LIKE '%search string%' ORDER BY `column1` DESC;
Если вы хотите, чтобы были сохранены все столбцы, то укажите «*»:
CREATE TABLE `db2`.`new_table` SELECT * FROM `db1`.`old_table` WHERE `row` LIKE '%search string%' ORDER BY `id` DESC;
Как сохранить результаты MySQL запроса в новую таблицу с PRIMARY KEY
После имени новой таблицы в скобках укажите имя и свойства столбца, который должен стать PRIMARY KEY, например:
CREATE TABLE `db2`.`test` (id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (id)) SELECT `column` FROM `db1`.`old_table` WHERE `row` LIKE '%search string%' ORDER BY `column` DESC;
Вам необязательно указывать имена каждого столбца, который составит новую таблицу. Полученные с помощью запроса SELECT данные будут присоединены к таблице справа.
Как указать свойства столбцов при сохранении результатов запроса в новую таблицу
После имени новой таблицы в скобках вы можете указать свойства столбцов, используя синтаксис CREATE TABLE:
CREATE TABLE `db2`.`test` (id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (id), KEY(title)) SELECT `title`, `link` FROM `db1`.`old_table` WHERE `body` LIKE '%search string%' ORDER BY `id` DESC;
Обратите внимание, что если полученные с помощью SELECT имена столбцов не совпадают с именами указанными в CREATE TABLE, то такие столбцы будут присоединены справа.
Как поменять имена столбцов в результатах MySQL запроса, сохраняемых в новую таблицу
С помощью ключевого слова AS вы можете поменять имя одного или нескольких столбцов.
Пример изменения имени одного столбца:
CREATE TABLE `db2`.`test` SELECT `link` AS `megalink` FROM `db1`.`old_table` WHERE `row` LIKE '%search string%' ORDER BY `column` DESC;
Пример изменения имени двух столбцов для вставки в создаваемую таблицу:
CREATE TABLE `db2`.`test` SELECT `id` AS `name`, `link` AS `megalink` FROM `db1`.`old_table` WHERE `row` LIKE '%search string%' ORDER BY `column` DESC;
Как в MySQL сохранить результаты MySQL запроса в существующую таблицу
Чтобы сохранить результаты запроса в существующую таблицу, используйте конструкцию:
INSERT INTO new_table SELECT //здесь идёт MySQL запрос (поиск по таблице)
Обратите внимание, что если вы не указываете имя столбцов, в который должны быть вставлены данные, то имена выбранных для сохранения столбцов должны совпадать в обеих таблицах.
Пример указания имени столбца в новой таблице для вставки данных:
INSERT INTO tbl_temp2 (fld_id) SELECT tbl_temp1.fld_order_id FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;
Либо для изменения имени полей используйте «AS», как это показано выше.
Полезные ссылки:
- https://dev.mysql.com/doc/refman/8.0/en/ansi-diff-select-into-table.html
- https://dev.mysql.com/doc/refman/8.0/en/create-table-select.html
MySQL: как сохранить вывод запроса в файл.
MySQL — это бесплатная и популярная система управления базами данных, которая используется многими разработчиками и аналитиками данных. Одной из функций MySQL является возможность вывода данных в файл.
В этой статье мы рассмотрим, как сохранить вывод запроса MySQL в файл.
Как сохранить вывод запроса MySQL в файл
Чтобы сохранить вывод запроса MySQL в файл, нужно использовать команду SELECT. INTO OUTFILE. Эта команда выполняет запрос и записывает результаты в файл на сервере.
Вот синтаксис команды SELECT. INTO OUTFILE:
sqlSELECT column1, column2, . FROM table_name INTO OUTFILE 'file_path'
Здесь column1, column2, . — это столбцы, которые вы хотите выбрать из таблицы; table_name — это имя таблицы; file_path — это путь к файлу, в который будут записаны результаты.
sqlSELECT first_name, last_name, email FROM customers INTO OUTFILE '/var/lib/mysql-files/customers.csv'
Этот запрос выбирает имена, фамилии и адреса электронной почты клиентов из таблицы customers и записывает результаты в файл /var/lib/mysql-files/customers.csv.
Обратите внимание, что путь к файлу должен указывать на директорию, к которой у MySQL есть доступ для записи.
Как использовать сохраненный файл
После того, как вы сохраните вывод запроса MySQL в файл, вы можете использовать его в различных целях. Например, вы можете импортировать данные из файла в другую таблицу, отправить файл по электронной почте или открыть его в Excel.
Чтобы импортировать данные из файла в другую таблицу MySQL, используйте команду LOAD DATA INFILE. Вот синтаксис:
sqlLOAD DATA INFILE 'file_path' INTO TABLE table_name
Здесь file_path — это путь к файлу, из которого вы хотите импортировать данные; table_name — это имя таблицы, в которую вы хотите импортировать данные.
sqlLOAD DATA INFILE '/var/lib/mysql-files/customers.csv' INTO TABLE new_customers
Эта команда импортирует данные из файла /var/lib/mysql-files/customers.csv в таблицу new_customers.
Обратите внимание, что для использования команды LOAD DATA INFILE, файл должен находиться на сервере MySQL.
