Para não ocorrer erro carregar um arquivo XML via OPENROWSET, quando o XML possui acentuação (Illegal Characters / Illegal Characters), basta adicionar o encoding na primeira linha do XML:
<?xml version="1.0" encoding = "ISO-8859-1" ?>
quinta-feira, 29 de setembro de 2011
Bulk Insert e BCP / Queryout sem perder acentuação (SQL Server)
Para não perder a acentuação das palavras ao carregar um TXT via BULK INSERT ou ao exportar uma tabela via QUERYOUT, é necessário definir a CODEPAGE/COLLATION.
É simples:
BULK INSERT - Exemplo:
set @cmd = 'bulk insert TABELA from
''' + @FileName + ''' WITH (CODEPAGE = 1252)'
exec(@cmd)
BCP/QUERYOUT - Exemplo:
set @cmd = 'bcp "SELECT * FROM ##atu_conf" queryout ' + @FileName + ' -T -c -C1252 -t, '
EXEC xp_cmdshell @cmd
É simples:
BULK INSERT - Exemplo:
set @cmd = 'bulk insert TABELA from
''' + @FileName + ''' WITH (CODEPAGE = 1252)'
exec(@cmd)
BCP/QUERYOUT - Exemplo:
set @cmd = 'bcp "SELECT * FROM ##atu_conf" queryout ' + @FileName + ' -T -c -C1252 -t, '
EXEC xp_cmdshell @cmd
Marcadores:
sql server; acentuação; bcp; bulk insert;
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;
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
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.
[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.
terça-feira, 26 de abril de 2011
Erro ao instalar Microsoft SQL Server 2008 Standard: MSXML 6.0 Parser (KB933579) -- Installation failed
Erro ao instalar Microsoft SQL Server 2008 Standard: MSXML 6.0 Parser (KB933579) -- Installation failed
Solução
- Desinstalar o MSXML 6 SP2 (Microsoft Core XML Services (MSXML) 6.0 SP2)
- Instalar o MSXML 6 disponível neste site
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=993C0BCF-3BCF-4009-BE21-27E85E1857B1&displaylang=en
Caso você não consiga desinstalar o MSXML6 SP2 (erro fatal durante desinstalação do MSXML6):
- Acesse o link abaixo e baixe o Fix it.
- Reinicie o computador. Em seguida, instale o MSXML6 do link acima.
- E para finalizar, inicie novamente a instalação do SQL Server 2008.
Felipe
Solução
- Desinstalar o MSXML 6 SP2 (Microsoft Core XML Services (MSXML) 6.0 SP2)
- Instalar o MSXML 6 disponível neste site
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=993C0BCF-3BCF-4009-BE21-27E85E1857B1&displaylang=en
Caso você não consiga desinstalar o MSXML6 SP2 (erro fatal durante desinstalação do MSXML6):
- Acesse o link abaixo e baixe o Fix it.
- Reinicie o computador. Em seguida, instale o MSXML6 do link acima.
- E para finalizar, inicie novamente a instalação do SQL Server 2008.
Felipe
Marcadores:
microsoft sql server 2008; msxml 6
Erro ao atualizar VS2008: Error 1935: An error occurred during the installation of the assembly
Erro ao atualizar visual studio 2008:
Error 1935: An error occurred during the installation of the assembly
Solução 1:
Reinicie a máquina e inicie novamente o VS2008 Setup.
Solução 2:
Se a solução 1 não funcionar:
1. Desabilite as atualizações automáticas do Windows (Menu Iniciar\Painel de Controle\Atualizações automáticas)
2. Desabilite o antivírus;
3. Inicie novamente a instalação/atualização do VS2008;
4. Quando finalizar a atualização, habilite novamente as atualizações automáticas (se desejar) e ative novamente o antivírus.
Fonte:
http://blogs.msdn.com/b/varungupta/archive/2007/11/27/visual-studio-2008-setup-fails-with-error-1935-an-error-occurred-during-the-installation-of-the-assembly.aspx
Visual Studio 2008 setup fails with "Error 1935: An error occurred during the installation of the assembly......."
Varun Gupta - MSFT
27 Nov 2007 3:07 AM
Sometimes this error occurs if windows update is scanning for updates at the same time as Visual Studio setup is installing components.
Workaround 1:
Reboot your machine and restart Visual Studio 2008 setup.
Workaround 2:
If Workaround 1 doesn’t work,
1. Reboot the machine
2. Disable windows update (start menu -> windows update)
3. Restart VS setup
4. When VS Setup is done, enable windows update (don't forget this step!)
If you run into any problems with either installation or uninstall, please make sure to post in the Visual Studio 2008 Setup and Installation Forum on MSDN.
Error 1935: An error occurred during the installation of the assembly
Solução 1:
Reinicie a máquina e inicie novamente o VS2008 Setup.
Solução 2:
Se a solução 1 não funcionar:
1. Desabilite as atualizações automáticas do Windows (Menu Iniciar\Painel de Controle\Atualizações automáticas)
2. Desabilite o antivírus;
3. Inicie novamente a instalação/atualização do VS2008;
4. Quando finalizar a atualização, habilite novamente as atualizações automáticas (se desejar) e ative novamente o antivírus.
Fonte:
http://blogs.msdn.com/b/varungupta/archive/2007/11/27/visual-studio-2008-setup-fails-with-error-1935-an-error-occurred-during-the-installation-of-the-assembly.aspx
Visual Studio 2008 setup fails with "Error 1935: An error occurred during the installation of the assembly......."
Varun Gupta - MSFT
27 Nov 2007 3:07 AM
Sometimes this error occurs if windows update is scanning for updates at the same time as Visual Studio setup is installing components.
Workaround 1:
Reboot your machine and restart Visual Studio 2008 setup.
Workaround 2:
If Workaround 1 doesn’t work,
1. Reboot the machine
2. Disable windows update (start menu -> windows update)
3. Restart VS setup
4. When VS Setup is done, enable windows update (don't forget this step!)
If you run into any problems with either installation or uninstall, please make sure to post in the Visual Studio 2008 Setup and Installation Forum on MSDN.
sábado, 26 de fevereiro de 2011
Delphi - Stringrid multilinha
Código para StringGrid multilinha - quebrar o texto em linhas.
Depois, basta adicionar o + #13 entre o texto que você quer quebrar.
procedure TForm1.StringGrid1DrawCell(Sender: TObject;
Col, Row: Longint;
Rect: TRect;
State: TGridDrawState);
var
Line1: string;
Line2: string;
ptr: integer;
padding: integer;
begin
If (ACol > 0) and (ARow >0) Then
Begin
ptr := Pos(';', StringGrid1.Cells[ACol, ARow]);
if ptr > 0 then
begin
Line1 := Copy(StringGrid1.Cells[ACol, ARow], 1, ptr - 1);
Line2 := Copy(StringGrid1.Cells[ACol, ARow], ptr + 1,
Length(StringGrid1.Cells[ACol,ARow]) - ptr);
end
else
Line1 := StringGrid1.Cells[ACol, ARow];
StringGrid1.Canvas.FillRect(Rect);
StringGrid1.Canvas.TextOut(Rect.Left, Rect.Top + 2, Line1);
if ptr > 0 then
StringGrid1.Canvas.TextOut(Rect.Left, Rect.Top -
StringGrid1.Canvas.Font.Height + 3, Line2);
End;
Depois, basta adicionar o + #13 entre o texto que você quer quebrar.
procedure TForm1.StringGrid1DrawCell(Sender: TObject;
Col, Row: Longint;
Rect: TRect;
State: TGridDrawState);
var
Line1: string;
Line2: string;
ptr: integer;
padding: integer;
begin
If (ACol > 0) and (ARow >0) Then
Begin
ptr := Pos(';', StringGrid1.Cells[ACol, ARow]);
if ptr > 0 then
begin
Line1 := Copy(StringGrid1.Cells[ACol, ARow], 1, ptr - 1);
Line2 := Copy(StringGrid1.Cells[ACol, ARow], ptr + 1,
Length(StringGrid1.Cells[ACol,ARow]) - ptr);
end
else
Line1 := StringGrid1.Cells[ACol, ARow];
StringGrid1.Canvas.FillRect(Rect);
StringGrid1.Canvas.TextOut(Rect.Left, Rect.Top + 2, Line1);
if ptr > 0 then
StringGrid1.Canvas.TextOut(Rect.Left, Rect.Top -
StringGrid1.Canvas.Font.Height + 3, Line2);
End;
segunda-feira, 10 de janeiro de 2011
Instruções de Instalação do Indy10 para Delphi 7
Parece haver um bug na instalação do do Indy10 para Delphi 7.
Por isso, segue o passo a passo para instalar o Indy10 com sucesso.
DESINSTALANDO O INDY 7
Para o indy10 funcionar, você tem que desinstalar a versão antiga, senão, dará conflito ao compilar seu
código.
- Acesse o menu Component\Install Package
- Localize lingha "Internet Direct Indy for D7..."
- Clique nela e clique em REMOVE.
*Remova as DCU do Indy versão 7*
- Acesse a pasta C:\Arquivos de programas\Borland\Delphi7\Lib
- Apague todas as DCU iniciadas por Id (ID*.DCU). São aproximadamente 177 arquivos.
Obs.: Recomendo mover para uma outra pasta, para caso de precisar delas novamente.
INSTALANDO O INDY 10
- Feche o Delphi;
- Execute o indy10.1.5_d7.exe
CORRIGINDO A INSTALAÇÃO
- Abra o Delphi.
- Ele exibirá a mensagem "Cannot load package dclindycore70.bpl...", perguntando se deseja tentar abrí-la
novamente na próxima vez que iniciar o Dephhi. Clique em NÃO para todas as perguntas.
- Acesse o menu Tools\Environment Options;
- Na aba Library, clique no botão ao lado do Library Path;
- Verifique se a pasta C:\Arquivos de Programas\Indy for Delphi 7\LibD7 está na lista.
- Se não estiver, adicione.
REGISTRANDO OS PACOTES (DPK) DO COMPONENTE
- Acesse a pasta onde o Indy10 foi instalado (C:\Arquivos de Programas\Indy 10 for Delphi 7) e abra a
pasta Source. Lá existem 4 subpastas.
- Agora vamos compilar os pacotes (DPK) na ordem correta.
Apenas compilar! Você não conseguie instalá-los.
1. IndySystem70.dpk (pasta \System)
2. IndyCore70.dpk (pasta \Core)
3. IndyProtocols70.dpk (pasta \Protocols)
4. dclIndyCore70.dpk (pasta \Core)
5. dclIndyProtocols70.dpk (pasta \Protocols)
- Agora, acesse o menu Components\Install Package;
- Cliquem em ADD e adicione as duas BPL's da pasta C:\Arquivos de Programas\Indy for Delphi 7\LibD7:
- dclIndyCore70.bpl
- dclIndyProtocols.bpl
- Feche o Delphi e entre novamente.
Algumas instruções estão no link abaixo, mas não funciona exatamente como deveria:
http://www.indyproject.org/Sockets/Docs/indy10Installation.de.aspx
Por isso, segue o passo a passo para instalar o Indy10 com sucesso.
DESINSTALANDO O INDY 7
Para o indy10 funcionar, você tem que desinstalar a versão antiga, senão, dará conflito ao compilar seu
código.
- Acesse o menu Component\Install Package
- Localize lingha "Internet Direct Indy for D7..."
- Clique nela e clique em REMOVE.
*Remova as DCU do Indy versão 7*
- Acesse a pasta C:\Arquivos de programas\Borland\Delphi7\Lib
- Apague todas as DCU iniciadas por Id (ID*.DCU). São aproximadamente 177 arquivos.
Obs.: Recomendo mover para uma outra pasta, para caso de precisar delas novamente.
INSTALANDO O INDY 10
- Feche o Delphi;
- Execute o indy10.1.5_d7.exe
CORRIGINDO A INSTALAÇÃO
- Abra o Delphi.
- Ele exibirá a mensagem "Cannot load package dclindycore70.bpl...", perguntando se deseja tentar abrí-la
novamente na próxima vez que iniciar o Dephhi. Clique em NÃO para todas as perguntas.
- Acesse o menu Tools\Environment Options;
- Na aba Library, clique no botão ao lado do Library Path;
- Verifique se a pasta C:\Arquivos de Programas\Indy for Delphi 7\LibD7 está na lista.
- Se não estiver, adicione.
REGISTRANDO OS PACOTES (DPK) DO COMPONENTE
- Acesse a pasta onde o Indy10 foi instalado (C:\Arquivos de Programas\Indy 10 for Delphi 7) e abra a
pasta Source. Lá existem 4 subpastas.
- Agora vamos compilar os pacotes (DPK) na ordem correta.
Apenas compilar! Você não conseguie instalá-los.
1. IndySystem70.dpk (pasta \System)
2. IndyCore70.dpk (pasta \Core)
3. IndyProtocols70.dpk (pasta \Protocols)
4. dclIndyCore70.dpk (pasta \Core)
5. dclIndyProtocols70.dpk (pasta \Protocols)
- Agora, acesse o menu Components\Install Package;
- Cliquem em ADD e adicione as duas BPL's da pasta C:\Arquivos de Programas\Indy for Delphi 7\LibD7:
- dclIndyCore70.bpl
- dclIndyProtocols.bpl
- Feche o Delphi e entre novamente.
Algumas instruções estão no link abaixo, mas não funciona exatamente como deveria:
http://www.indyproject.org/Sockets/Docs/indy10Installation.de.aspx
Assinar:
Postagens (Atom)