1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

SQL - Como seleccionar todas as tabelas começadas por A?

Discussão em 'Programação' iniciada por virtualpraxis, 19 de Junho de 2006. (Respostas: 13; Visualizações: 3181)

  1. virtualpraxis

    virtualpraxis Power Member

    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?
     
    Última edição: 19 de Junho de 2006
  2. Lostctrl

    Lostctrl [email protected] Member

    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
     
  3. virtualpraxis

    virtualpraxis Power Member

    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...
     
    Última edição: 19 de Junho de 2006
  4. Lostctrl

    Lostctrl [email protected] Member

    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...
     
  5. virtualpraxis

    virtualpraxis Power Member

    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...?
     
  6. nothing

    nothing Power Member

    E só com o

    SELECT name FROM SYSOBJECTS WHERE TYPE='U' AND name LIKE 'a%'

    não funciona?
     
  7. virtualpraxis

    virtualpraxis Power Member

    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
     
    Última edição: 20 de Junho de 2006
  8. inginheiiro

    inginheiiro Power Member

    SELECT * FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_NAME like 'a%'

    em sql server 2000 ou 2005.

    /ing
     
  9. virtualpraxis

    virtualpraxis Power Member


    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...
     
  10. inginheiiro

    inginheiiro Power Member

    ...
    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
     
    Última edição: 20 de Junho de 2006
  11. virtualpraxis

    virtualpraxis Power Member

    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
     
    Última edição: 20 de Junho de 2006
  12. inginheiiro

    inginheiiro Power Member

    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
     
  13. virtualpraxis

    virtualpraxis Power Member

    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?
     
  14. XiriX

    XiriX Banido

    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
     

Partilhar esta Página