Архив метки: sql

MS SQL Импорт данных из внешнего файла

SQL Запрос на изменение данных UPDATEНеобходимо выбрать определенные данные из файла XLS, и загрузить в базу данных MS SQL.

Код как выбрать ниже, а добавление идет стандартно через «INSERT»

Для этого можно использовать «команду» opendatasource :

SELECT COD
     , PR
FROM
  opendatasource('MICROSOFT.ACE.OLEDB.12.0', 'Data Source="C:\C95.xls";Extended properties=Excel 8.0')...[Лист1$] AS tbl
WHERE PR<1000

Соответственно необходимо явно указать название столбцов COD и PR в файле XLS. К примеру как на картинке

XLS_PRICE

В первый раз может не получится это запустить. Необходимо выполнить это
1

"EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE
GO

2

USE [master]
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
GO

MS SQL выборка по максимальной дате

Letter_Ru_phpНеобходимо сделать выборку из таблицы по максимальной дате каждого поля.

 

Допустим есть таблица ARTDATA

Id Name DATAVAL

1  A       01.01.2015
2  A       02.01.2015
3  B       01.01.2015

SELECT *
FROM
ARTDATA AS [data]
WHERE
DATAVAL = (SELECT max(DATAVAL)
FROM
ARTDATA
WHERE
Name = [data].Name)

Результат

2  A       02.01.2015
3  B       01.01.2015

Приведенный выше полностью рабочий пример, не единственное решение. Можно также сделать данную выборку по дате с помощью LEFTJOIN

 

 

Запрос SQL для добавления записи в БД

Запрос SQL для добавления записи в таблицу БД.

Общий вид  запроса

INSERT INTO имя таблицы (поле1, поле2) VALUES (‘данные поля1’,’данные поля2’)
или
INSERT INTO имя таблицы SET поле1=‘данные поля1’, поле2=’данные поля2’

Пример запроса

INSERT INTO fruit (Name, color) VALUES (‘apple’,’green’);

Рабочий пример листинга использования запроса на добавления (MySql + php.)

/* Соединяемся с базой данных */
$hostname = "localhost"; // название/путь сервера, с MySQL
$username = "root"; // имя пользователя
$password = ""; // пароль пользователя (если пароль отсутствует, этот параметр можно оставить пустым)
$dbName = "test"; // название базы данных
 /* Таблица MySQL, в которой хранятся данные */
$table = "test_table";
 /* Создаем соединение */
mysql_connect($hostname, $username, $password) or die ("Не могу создать соединение");
/* Корректный вывод русских букв */
mysql_query('SET NAMES cp1251') or header('Location: Error');
/* Выбираем базу данных. Если произойдет ошибка - вывести ее */
mysql_select_db($dbName) or die (mysql_error());
/* Запрос на добавление */
  $query = "INSERT INTO
   	     $table
	    SET
	     dolzhnost='$dolz',
	     inn='$inn',
	     fullnameorg='$fname',
	     fio='$fioname',
	     date='$cdate',
	     yuradres='$yuradress',
	     factadres='$fadress'
  	   ";
/* Выполняем запрос. Если произойдет ошибка - вывести ее. */
mysql_query($query) or die(mysql_error());
/* В случае успешного сохранения выводим сообщение и ссылку возврата */
echo ("<div style=\"text-align: center; margin-top: 10px;\">
<font color=\"green\">Данные успешно отправлены!</font>
<a href=\"index.php\">Вернуться назад</a></div>");
header("Location: /eoz/index.php");
        exit;
};
/* Закрываем соединение */
mysql_close();)

Также можно посмотреть:

Пример запроса SQL на обновления поля в таблице БД

Очистка больших файлов логов ldf в MsSQL

mssql_expressПроблема:

Слишком большой файл логов транзакций, например srvcalog.ldf — почти 30 ГБ. Его надо очистить, уменьшить размер.

Решение

Решением является штатная процедура чистки логов — в MS SQL Server Management Studio Express создаем новый запрос к требуемой базе. И там прописать следующий код скрипта

BACKUP LOG [имя вашей базы] WITH TRUNCATE_ONLY
DBCC SHRINKFILE(2, TRUNCATEONLY)

выполняем.

В моем случае файл логов занимал 30ГБ, после выполнения запроса 1Мб.

SQL запрос на изменение данных в таблице БД

SQL Запрос на изменение данных UPDATEИзменение значений полей в таблице

Чтобы изменить значение в поле в таблице БД необходимо выполнить запрос UPDATE.

Общий синтаксис запроса UPDATE

UPDATE [LOW_PRIORITY] имя_таблицы
    SET название_поля1=выражение1,название_поля2=выражение2,...
    [WHERE условное_выражение] [LIMIT количество_записей]

UPDATE заменит значения текущих полей таблицы на новые значения.
SET устанавливает какие поля изменять и новые значения, которые нужно присвоить этим полям.
WHERE (если необходимо) — условие на изменение определенных записей. Если WHERE не указан, изменены будут все записи.
При указании параметра LOW_PRIORITY, выполнение UPDATE задержится пока другие клиенты читают таблицу.

Пример запроса на изменение всех записей поля «apple» таблицы «fruit» на определенное значение

UPDATE fruit SET apple=5;

Пример запроса с WHERE который изменяет определенную запись:

UPDATE tovar SET price=500 WHERE id=5

При изменении значения поля можно использовать его текущее значение.
Пример запроса увеличивающего значение поля price в 2 раза:

UPDATE tovar SET price=price*2;

SET в UPDATE вычисляет выражения слева направо.
Пример запроса который удваивает цену (поле price), а потом уменьшает его на 10:

UPDATE tovar SET price=price*2, price=price-10;

Запрос UPDATE возвратит количество полей, которые были изменены в этом запросе.
Использование LIMIT позволит изменять заданное количество записей.