View Full Version : SQL - Como seleccionar todas as tabelas começadas por A?
virtualpraxis 19-06-2006, 18:52 Como posso seleccionar todas as tabelas de uma base de dados MSSQL começadas pela letra 'a'?
Já tentei de variadas formas e nada...
Nota: Creio não ser possivel utilizar wildcards do tipo:
SELECT * FROM a*
Alguma sugestão?
Lostctrl 19-06-2006, 19:16 Boas,
MSSQL não sei, mas em oracle podes fazer isto :
select * from user_objects
where object_type = 'TABLE'
and object_name like 'A%'
Valida se tens uma tabela de controlo chamada user_objects na tua instância.
Abraços
virtualpraxis 19-06-2006, 19:29 Infelizmente ao executar o comando SQL acima obtenho o seguinte erro:
Msg 208, Level 16, State 1, Line 1
Invalid object name 'user_objects'.
Pelos vistos não tenho essa tabela de controlo...
Lostctrl 19-06-2006, 19:40 Boas,
Sim eu tambem pensei q não ia ser assim "chapa 3". Não sei nada de MSSQL mas fiz uma pesquisa rápida e dei com estes comandos :
sp_help
ou
select * from SYSOBJECTS
where TYPE = 'U'
order by NAME
Ve se dá alguma coisa...
virtualpraxis 19-06-2006, 20:48 Damn... já ando desde manhã para tentar resolver isto e tu consegues em menos de 30m dar-me uma grande ajuda. Thumbs up!
Assim... a minha query final seria algo do género:
select * from (select name from SYSOBJECTS where TYPE = 'U' and NAME like 'a%')
mas infelizmente dá erro:
Msg 102, Level 15, State 1, Line 2
Incorrect syntax near ')'.
estranho... em principio a query está correcta. Não percebo onde está o erro...?
E só com o
SELECT name FROM SYSOBJECTS WHERE TYPE='U' AND name LIKE 'a%'
não funciona?
virtualpraxis 20-06-2006, 11:50 E só com o
SELECT name FROM SYSOBJECTS WHERE TYPE='U' AND name LIKE 'a%'
não funciona?
Sim sim... executando esse comando dessa forma funciona (quero dizer, não dá erro).
Bom... o que eu tou tentando fazer é: tenho uma base de dados com cerca de 20000 tabelas (!), e ando a tentar exportar essa base de dados de SQL 2005 Express para SQL Server 2000.
Ora, já tentei de tudo para efectuar a exportação pelos métodos normais. Assim e utilizando o utilitário de import/export do SQL Server 2000 (aka DTS) tou a tentar importar as tabelas todas manualmente. Mas... no DTS existe uma opção que dá para usar uma query que selecciona as tabelas que se quer... e é isso mesmo que eu pretendo (penso que a query acima não é válida para o que pretendo).
HELP
inginheiiro 20-06-2006, 12:06 Sim sim... executando esse comando dessa forma funciona (quero dizer, não dá erro).
Bom... o que eu tou tentando fazer é: tenho uma base de dados com cerca de 20000 tabelas (!), e ando a tentar exportar essa base de dados de SQL 2005 Express para SQL Server 2000.
Ora, já tentei de tudo para efectuar a exportação pelos métodos normais. Assim e utilizando o utilitário de import/export do SQL Server 2000 (aka DTS) tou a tentar importar as tabelas todas manualmente. Mas... no DTS existe uma opção que dá para usar uma query que selecciona as tabelas que se quer... e é isso mesmo que eu pretendo (penso que a query acima não é válida para o que pretendo).
HELP
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME like 'a%'
em sql server 2000 ou 2005.
/ing
virtualpraxis 20-06-2006, 12:24 SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME like 'a%'
em sql server 2000 ou 2005.
/ing
Executando o comando acima no DTS (numa opção que diz 'use a query to specify data to transfer') do SQL Server 2000, ele escreve apenas uma tabela nova ('results') com os resultados da query executada (4 colunas - table_catalog, table_schema, table_name, table_type). Nada feito...
inginheiiro 20-06-2006, 12:33 Executando o comando acima no DTS (numa opção que diz 'use a query to specify data to transfer') do SQL Server 2000, ele escreve apenas uma tabela nova ('results') com os resultados da query executada (4 colunas - table_catalog, table_schema, table_name, table_type). Nada feito...
...
1-Eu não sei ao certo o que queres fazer.
2-para o quer que seja que desejas fazer, implica saberes um pouco sobre o motor de BD que tás a usar.
3- a query que coloquei , lista todas as tabelas começadas por A, na BD em utilização.
Exemplo: lista todas as tabelas da BD Northwind começadas por C
SELECT * FROM northwind.INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME like 'c%'
se usares a query sem especificares a BD (como eu coloquei no 1º post), obviamente vai buscar as tabelas da BD em uso.
outra coisa. esta query que coloquei retorna uma tabela com as seguintes colunas:
table_catalog, table_schema, table_name, table_type
será da tua "responsabilidade" filtrares os table_name que queres usar nos Dts'S.
/ing
virtualpraxis 20-06-2006, 12:57 O que pretendo é efectuar a copia da base de dados do SQL Server 2005 Express para o SQL Server 2000. Sendo que não encontrei outra forma de fazer isso sem ser utilizando o DTS (Data Transformation Service) do SQL Server 2000.
Para uma imagem do que tou a tentar utilizar ver a seguinte página:
http://www.databasejournal.com/features/mssql/article.php/10894_1963091_8
inginheiiro 20-06-2006, 13:28 O que pretendo é efectuar a copia da base de dados do SQL Server 2005 Express para o SQL Server 2000. Sendo que não encontrei outra forma de fazer isso sem ser utilizando o DTS (Data Transformation Service) do SQL Server 2000.
Para uma imagem do que tou a tentar utilizar ver a seguinte página:
http://www.databasejournal.com/features/mssql/article.php/10894_1963091_8
ok.
não te posso ajudar sobre este topico, pois não sou DBA.
se a tua BD for muito grande, então isso é um bico de obra, pois pelo que percebo os DTS preservam todas as propriedades da BD (logins,permissões,indices, etc etc etc).
uma abordagem + simplista seria extraires para um ficheiro ascii o schema da BD.
alterar o ficheiro para executar em sql server 2000.
correr o schema no 2000.
obviamente perderias algumas das propriedades...
/ing
virtualpraxis 20-06-2006, 13:40 ok... tou mesmo pensando seguir o que sugeres.
Agora... utilizando o MS SQL Server Management Studio Express como consigo fazer a exportação para ficheiro?
Não sou DBA mas trabalho do MSSQL todos os dias, e se queres copiar a BD de SQL 2k5 para SQL 2K consegues fazer isso na boa com o DTS. Tens uma opção de copy database. A espiga é que se vais com o entreprise manager, que é a tool do MSSQL 2K, é possivél que não consigas, pq o SQL 2K5 tem propriedades novas que não são copiaveis para uma BD MSSQL 2K. Convém usares o SQL Management Studio, que é a tool do SQL 2K5 e se fizeres a cópia/downgrade para SQL 2K, ele deve saber o que fazer.
O processo é simples, tens os dois servidores de BD no mesmo PC ou em PCs diferentes. Se for no mesmo PC, deves ter duas instâncias, uma para o SQL 2K5 e outra para o SQL 2K. Abres uma das instâncias, utilizas o DTS. Defines o source, e o target. Especificas se queres cópia integral da BD, ou só estrutura das tabelas, ou só dados, etc etc. O que quiseres, e depois metes a executar a cópia e siga.
Abraços
X|r|X
|
|