É possível consultar um arquivo delimitado por tabulações no Sql Server Management Studio para visualizar seus dados sem salvá-los em qualquer lugar?
Eu sei que você pode BULK INSERT
de um arquivo delimitado por tabulações usando algo como:
BULK INSERT SomeTable
FROM 'MyFile.txt'
WITH (
FIELDTERMINATOR = '\t',
ROWTERMINATOR = '\n');
no entanto, isso exige que você conheça as colunas com antecedência e crie uma tabela para armazenar os dados.
Também sei que você pode consultar outros tipos de arquivos, como CSV ou Excel, sem definir as colunas com antecedência, usando OPENROWSET
os drivers do Excel, como:
-- Query CSV
SELECT *
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Text;Database=\\Server\Folder\;HDR=Yes;',
'SELECT * FROM MyFile.csv')
-- Query Excel
SELECT *
FROM OPENROWSET('Microsoft.Ace.OLEDB.12.0',
'Excel 8.0;Database=MyFile.xls',
'SELECT * FROM [Sheet1$]')
Além disso, se eu mudar a chave de registro Format
sob HKLM\Software\Microsoft\Office\12.0\Access Connectivity Engine\Engines\Text
a partir CSVDelimited
de TabDelimited
sobre o SQL Server, a consulta CSV acima irá ler corretamente um arquivo de texto delimitado por tabulação, no entanto, ele não irá ler um arquivo de texto separado por vírgulas para que eu não acho que eu quero para deixar assim.
Tentar usar Format=TabDelimited
no OPENROWSET
também não funciona
SELECT *
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Text;Database=\\Server\Folder\;HDR=Yes;Format=TabDelimited',
'SELECT * FROM MyFile.txt')
Fiz algumas tentativas para copiar as Text
chaves de registro de ambos os Engines
e ISAM Formats
chaves para algo personalizado que o padrão é TabDelimited
, no entanto, é ainda leitura de arquivos com CSVFormat
em vez de TabDelimited
formato de modo que deve estar faltando alguma coisa aqui.
Existe uma maneira de consultar um arquivo delimitado por tabulação para exibir seu conteúdo sem ter que criar uma tabela BULK INSERT
?
Estou usando o SQL Server 2005
fonte
.bak
não é uma extensão delimitada normal e o erro que ele me deu na primeira tentativa éCould not find installable ISAM
, portanto, não acho que isso funcione.Respostas:
Você deve criar um arquivo schema.ini que contenha o delimitador no mesmo diretório que o arquivo de texto que está abrindo. Essa é a única maneira de substituir os valores do registro por arquivo. Consulte a documentação do formato do arquivo no MSDN . Exemplo:
Em C: \ Text \ schema.ini:
Se essa atividade precisar ser repetida com frequência, sugiro um script para criar o schema.ini. Vários arquivos podem ser referenciados no mesmo schema.ini ou um schema.ini separado pode ser incluído em cada arquivo de texto em seu próprio diretório.
fonte