quinta-feira, 26 de maio de 2011

SQL Server - criar diretório via XP_CREATE_SUBDIR usando parâmetro

O comando xp_create_subdir 'c:\sua_pasta' funciona, mas se for criar um diretório/pasta utilizando uma variável, terá de fazer assim:


declare @dir varchar(30)
set @dir = 'c:\sua_pasta'
exec xp_create_subdir @dir

Caso contrário, retornará o erro Incorrect syntax near 'xp_create_subdir'.

sql server; xp_create_subdir; Incorrect syntax near xp_create_subdir;

quinta-feira, 19 de maio de 2011

Oracle 10g - recuperando uma tabela dropada

A partir da versão 10g do Oracle, é possível recuperar uma tabela que foi excluída (DROP), graças a uma tabela do sistema chamada RecycleBin e a um recurso chamado Flashback

Vamos ao Exemplo:

Crio uma tabela
create table Tabela1
(id integer, nome varchar(50));

Populo a tabela com alguns registros
insert into tabela1 (id, nome) values (1, 'Napa 1');
insert into tabela1 (id, nome) values (2, 'Napa 2');
insert into tabela1 (id, nome) values (3, 'Napa 2');
insert into tabela1 (id, nome) values (4, 'Napa 3');
COMMIT;

Consulto os dados da tabela
select * from tabela1

Agora dou um Drop na tabela
drop table tabela1

Tento dar um novo select na tabela: retornará erro
select * from tabela1

Note que ela fica armazenada na tabela recyclebin
select * from recyclebin

Para recuperar a tabela, executo o comando abaixo
flashback table tabela1 TO before DROP

Um novo select na tabela e os dados estarão lá
select * from tabela1


OBSERVAÇÕES IMPORTANTES

Os objetos dropados permanecem na tabela recyclebin até que:
- Seja restaurada através do comando UNDROP;
- Seja dropado permanentemente através do comando PURGE;
- Até que não tenha espaço suficiente para os objetos regulares na tablespace;
- As Contraints referencial não são protegidas pela recyclebin;

Observações extraídas de: ProfissionaisOracle.com.br

terça-feira, 17 de maio de 2011

SQL Server - exemplo simples de BulkInsert

CREATE TABLE [dbo].[CLIENTE](
[ID] [int] IDENTITY(1,1) NOT NULL,
[NOME] [nvarchar](100) NULL
) ON [PRIMARY]


Conteúdo a impordar: Arquivo CARGA.TXT
2;JOAQUIM;
3;MARIA;
4;PEDRO;

Abrir o MS-DOS e se logar no SQLCMD
sqlcmd -Useu_usuario -Psuasenha


BULK INSERT [Nome_da_Sua_Database].dbo.Cliente FROM "C:\CARGA.TXT"
WITH
(
FIRSTROW = 1,
FIELDTERMINATOR =";"
);
GO

Note que ele irá ignorar o ID informado, pois usará o IDENTITY da coluna ID.
Para fazer valer o ID do arquivo, adione o parâmetro KEEP_IDENTITY, dentro do WITH.

Pronto.