Mais

Não é possível importar certas tabelas do SQL Server para QGIS


Esta é uma lista de 193 códigos postais e suas geometrias que não importam no QGIS.

Esta é uma lista de 999 grupos de blocos do censo e suas geometrias que são importadas no QGIS.

Este é o Adicionar Camada MSSQL tbl no QGIS. Mostra o que a tabela exibe quando tento importar os dois.

O que faria com que uma tabela pudesse importar, mas não a outra?

Estou tendo esse problema de não conseguir importar arquivos de forma do SQL para o QGIS. Estou usando códigos postais na Flórida como formas. Eu escrevi uma consulta em sql para me dar certos códigos postais e suas geometrias para determinados condados em FL. Isso foi colocado em uma nova tabela em sql que consiste em quase 200 códigos postais. Quando tento importar isso para o QGIS, ele não importa. A tabela de importação MSSQL não me permite selecionar esta tabela. No entanto, se eu alterar a consulta para incluir apenas 20 CEPs, isso me permitirá selecionar e importar a tabela. Então, o QGIS tem um limite para a quantidade de formas que pode importar? Tenho outras tabelas em sql que têm mais de 1000 formas e são importadas, mas não esta de 200 CEPs.


Também notei que o QGIS até a minha versão atual (2.12.2) parece ter um problema ao carregar geometrias MSSQL do tipo "GeometryCollection", quando você esperaria polígonos ou multipolígonos. Para verificar se você os tem, use:

SELECT GEOM.STGeometryType () FROM [yourtable]

Eu uso este software grátis, Spatial Data Manager.
Descobri que é o único software livre que pode carregar dados espaciais diretamente entre os principais RDBMS.
Você pode filtrar seus dados durante a operação de exportação.


& ldquoNunca faça no código o que você pode fazer com que o servidor SQL faça bem para você & rdquo - esta é uma receita para um design ruim?

É uma ideia que ouvi repetida em vários lugares. Alguns mais ou menos reconhecendo que, uma vez que tentar resolver um problema puramente em SQL excede um certo nível de complexidade, você deve de fato tratá-lo em código.

A lógica por trás da ideia é que, para a grande maioria dos casos, o mecanismo de banco de dados fará um trabalho melhor em encontrar a maneira mais eficiente de concluir sua tarefa do que você faria no código. Especialmente quando se trata de coisas como tornar os resultados condicionais às operações realizadas nos dados. Pode-se argumentar que, com motores modernos, efetivamente JIT'ing + caching a versão compilada de sua consulta faria sentido superficialmente.

A questão é se alavancar ou não seu mecanismo de banco de dados dessa forma é uma prática de design inerentemente ruim (e por quê). As linhas ficam mais borradas quando toda a lógica existe dentro do banco de dados e você está apenas acessando-a por meio de um ORM.


2 respostas 2

Você pode fazer isso com certeza com tabelas, bem como Powerpivot e Data Explorer. O mais fácil, e meu método preferido atualmente, é criar uma consulta parametrizada no Excel. Para fazer isso, use o Query Wizard e, no final, adicione restrições para cada parâmetro que deseja passar. Feito isso, você pode editar as Propriedades da Conexão e atribuir o Parâmetro a ser retornado como um valor estático, caixa de diálogo ou célula da planilha.

  1. Selecione sua fonte de dados usando o MS Query - isso é necessário para poder passar os parâmetros de volta para Dados SQL & gtOther Sources & gtMicrosoft Query.
  2. Escolha a fonte de dados, selecione sua fonte de dados SQL aqui. Geralmente, deixo todas essas opções em branco até chegar à janela Concluir e, em seguida, seleciono Exibir dados ou editar consulta no MS Query.
    • Nota: Normalmente, eu pré-processo as informações que desejo do SQL em uma única visualização à qual posso me conectar aqui, mas geralmente você pode passar qualquer instrução select. Não tentei chamar um procedimento armazenado, então não tenho certeza de como isso funcionaria.
  3. Na janela do MS Query, clique no botão Mostrar / ocultar critérios e escolha um campo de critérios. Isso é o que chama seus parâmetros para serem passados ​​de volta ao SQL.
    • Exemplo: Se você tiver um campo de data e selecioná-lo no campo Critérios, adicione um Valor entre [início] e [fim]. Isso criará um parâmetro e o MS Query solicitará que você preencha os dois valores e retorne imediatamente o conjunto de dados apropriado. Se você verificar a instrução SQL criada, será adicionada uma cláusula WHERE (datasource.date Between? And?).
  4. Selecione Arquivo> Retornar dados ao Excel e, em seguida, Escolher tabela.
  5. Para que a tabela extraia seu parâmetro de consulta automaticamente, selecione uma célula em sua tabela e vá para Dados> Propriedades> Propriedades da conexão> Definição> Parâmetros.
  6. Para cada parâmetro, você pode escolher
    1. Solicita que você forneça um valor ou
    2. Use um valor específico ou
    3. Obtenha um valor de uma célula da planilha, com a opção de atualizar automaticamente os dados da tabela sempre que o valor da célula for alterado.
      • Como uma opção adicional, você pode usar a validação de dados na célula que você escolher para seu parâmetro, permitindo que você limite os valores possíveis para escolher. Você pode até mesmo fazer com que as células de validação venham de uma tabela que é alimentada por valores de seu banco de dados, garantindo que apenas os valores mantidos no banco de dados possam ser selecionados.

    Freqüentemente, crio uma tabela dinâmica com base em uma tabela alimentada por uma consulta paramterizada para retornar valores para intervalos de datas específicos atualizados automaticamente (por exemplo, 6 meses anteriores).

    EDITAR: Para retornar vários valores para uso em uma cláusula SQL IN, você só precisa modificar a janela Critérios na caixa MS Query. Por exemplo, se você tiver o nome de campo País, selecione-o no Campo de critérios e, em seguida, para Valor, insira IN ([Primeiro], [Segundo], [Terceiro]). Escolha Retornar dados para o Excel e o MS Query solicitará que os valores sejam inseridos manualmente. Assim que estiver de volta ao Excel, você pode modificar os parâmetros novamente e apontá-los para três células em sua planilha, cada uma das quais pode ser restringida pela Validação de Dados. Embora haja provavelmente um limite para quantos parâmetros você pode passar assim, o Excel lida facilmente com três, portanto, alguns mais provavelmente não estão fora de questão.


    Deve fazê-lo, lembre-se de adicionar -u $ USER e -p $ PASSWORD conforme necessário

    Eu daria uma olhada no Percona Toolkit. A descrição da ferramenta pt-show-grant diz tudo.

    pt-show-concede extrações, pedidos e, em seguida, imprime concessões para contas de usuário MySQL.

    Por que você quer isso? Existem vários motivos.

    O primeiro é replicar facilmente os usuários de um servidor para outro, você pode simplesmente extrair as concessões do primeiro servidor e canalizar a saída diretamente para outro servidor.

    O segundo uso é colocar suas concessões no controle de versão.


    Mover banco de dados do SQL Server 2012 para 2008

    Eu tenho um banco de dados em uma instância do SQL Sever 2012 que gostaria de copiar para um servidor de 2008. O servidor de 2008 não pode restaurar backups criados por um servidor de 2012 (eu tentei).

    Não consigo encontrar nenhuma opção em 2012 para criar um backup compatível com 2008. Estou esquecendo de algo?

    Existe uma maneira fácil de exportar o esquema e os dados para um formato independente de versão que eu possa importar para 2008?

    O banco de dados não usa nenhum recurso específico de 2012. Ele contém tabelas, dados e procedimentos armazenados.

    Aqui está o que eu tentei até agora

    tentei Tarefas & rarr Gerar Scripts no servidor de 2012, e consegui gerar o esquema (incluindo procedimentos armazenados) como um script SQL. Isso não incluiu nenhum dos dados, no entanto.

    Depois de criar esse esquema na minha máquina de 2008, consegui abrir o assistente "Exportar dados" na máquina de 2012 e, depois de configurar 2012 como máquina de origem e 2008 como máquina de destino, fui apresentado a uma lista de tabelas que eu poderia copiar. Selecionei todas as minhas tabelas (mais de 300) e cliquei no assistente. Infelizmente, ele gasta muito tempo gerando seus scripts, depois falha com erros como "Falha ao inserir na coluna somente leitura 'FOO_ID'".

    Também tentei o "Assistente de cópia de banco de dados", que afirmava ser capaz de copiar "de 2000 ou mais tarde a 2005 ou mais tarde". Possui dois modos:

    "Detach and Attach", que falhou com o erro:

    Método de objeto de gerenciamento de SQL que falhou com erro

    Não é possível ler a propriedade IsFileStream. Esta propriedade não está disponível no SQL Server 7.0. "


    Outros componentes

    Nome do Recurso Empreendimento Padrão Rede Expresso com serviços avançados Expressar
    StreamInsight StreamInsight Premium Edition StreamInsight Standard Edition StreamInsight Standard Edition Não Não
    StreamInsight HA StreamInsight Premium Edition Não Não Não Não


    Assista o vídeo: GDAL Tutorial 278: Import shapefile in sql server (Outubro 2021).