Parâmetros de string de conexão para Schema.ini
Fazendo um
schema.ini
abrir ou vincular arquivos de texto do Access é um dos dois métodos possíveis que podem ser usados para trabalhar com dados contidos nos arquivos do Access. No artigo anterior, analisamos os parâmetros da cadeia de conexão do arquivo de texto. Também discutimos a necessidade de ter informações de esquema adicionais para ajudar o Access a analisar os arquivos de texto. A Microsoft tem uma página sobre o schema.ini
, mas há algumas coisas que não ficam imediatamente claras, então vamos cobri-las aqui. schema.ini
arquivo
Cada pasta pode ter um único arquivo chamado
schema.ini
para onde podemos definir todos os formatos possíveis de arquivos de texto que esperamos encontrar dentro da pasta. Para cada arquivo de texto, precisamos iniciar uma seção com o nome do arquivo e depois descrever a estrutura. Começaremos com uma seção de amostra mínima e analisaremos cada parte. Não é necessário enumerar todos os arquivos de texto. Qualquer arquivo de texto não descrito pelo schema.ini
será simplesmente tratado usando a configuração padrão para melhor ou pior. Vejamos a estrutura do schema.ini
. [products.txt] Format=CSVDelimited ColNameHeader=True MaxScanRows=0 Col1=Products Text Col2=Count Long
Observe que a primeira linha para iniciar uma seção deve fazer referência a um arquivo de texto. Ele também deve ter colchetes para indicar um início de seção. Como você já deve saber, um
schema.ini
pode descrever mais de um arquivo de texto, portanto, a linha entre colchetes ajuda a manter o esquema de cada arquivo de texto separado. O próximo conjunto de linhas lida com o formato geral do arquivo e como o Access deve processar os arquivos de texto. Podemos indicar se um arquivo de texto possui cabeçalhos, quantas linhas examinar, qual página de código usar e assim por diante.
O último conjunto de linhas descreve as colunas individuais, seu nome, tipo de dados e largura.
Analisaremos as opções válidas e os valores possíveis para esses 2 conjuntos.
Opções para descrever a estrutura geral do arquivo de texto
Você verá uma lista de opções válidas disponíveis para descrever o formato geral do arquivo de texto. É típico especificar no mínimo o
Format
e ColNameHeader
mas todos os conteúdos possíveis são opcionais. Sempre que forem omitidos, serão utilizados os valores padrão conforme indicado abaixo. Vejamos como podemos descrever o formato de um determinado arquivo de texto. Opções gerais de estrutura
Como observado, esses são opcionais, embora raramente omitidos. No entanto, os padrões vêm das chaves de registro do mecanismo de texto. Mais detalhes sobre as chaves do registro podem ser encontrados aqui.
Format
:Indica o formato dos arquivos de texto. Se omitido, usa a chave de registro do mecanismo de texto,Format
. Os valores válidos são:TabDelimited
:as guias delimitam as colunas.CSVDelimited
:vírgulas delimitam as colunas como um arquivo CSV.Delimited(*)
:Um único caractere delimita as colunas. Pode ser qualquer caractere exceto o"
personagem. Por exemplo, um arquivo de texto delimitado com|
caractere deve reportarFormat=Delimited(|)
.FixedLength
:As colunas são de comprimento fixo; o conteúdo deve ser preenchido em conformidade. Todas as colunas devem ter uma largura definida.
CharacterSet
:usa uma página de código específica para ler o arquivo de texto. Os valores possíveis podem serANSI
,OEM
,Unicode
ou quaisquer valores numéricos que representem as páginas de código desejadas. Para localizar todas as páginas de código possíveis com suporte em sua máquina Windows, procure na chave do RegistroComputer\HKEY_CLASSES_ROOT\MIME\Database\Codepage\
. Por exemplo, se quiser usar a codificação utf-8, você pode especificarCharacterSet=65001
.ColNameHeader
:Indica se a primeira linha contém os nomes das colunas. Quando omitido, usa a chave de registro do mecanismo de texto,FirstRowHasNames
. Os valores podem serTrue
ouFalse
.MaxScanRows
:Número de linhas que o Access deve verificar em um arquivo de texto para adivinhar o tipo de dados possível. Se definido como 0, o Access verificará o arquivo inteiro. A chave de registro do mecanismo de textoMaxScanRows
é usado quando omitido.
Opções de localização
Essas opções lidam principalmente com a localização dos dados codificados em datas, horas ou moeda. Todas essas opções são opcionais e sempre que omitidas, as configurações de região do Windows são usadas.
DateTimeFormat
:o formato de data/hora a ser usado.DecimalSymbol
:qualquer caractere único usado como separador entre partes inteiras e fracionárias de um número.NumberDigits
:número de dígitos usados na parte fracionária de um número.NumberLeadingZeroes
:indica se deve haver um zero à esquerda para números maiores que -1 e menores que 1. Deve serTrue
ouFalse
.CurrencySymbol
:identifica o símbolo a ser interpretado como uma moeda.CurrencyPosFormat
:Descreve como os valores monetários devem ser informados no arquivo de texto. Existem quatro valores válidos a serem usados para esta configuração representados pelo número de 0 a 3. Observe que o exemplo usa$
mas em uso real, ele usará o símbolo de moeda real definido porCurrencySymbol
ou pela configuração do Windows.0
:prefixo sem espaço (por exemplo, $1)1
:Sufixo sem espaço (1$)
2
:prefixo com um espaço entre ($ 1)3
:Sufixo com um espaço entre (1 $)
CurrencyDigits
:número de dígitos em parte fracionária de um valor monetário.CurrencyNegFormat
:Indica a formatação de um valor monetário negativo. É um valor entre 0-15 como mostrado abaixo. Observe que o exemplo usa$
mas em uso real, ele usará o símbolo de moeda real definido porCurrencySymbol
ou pela configuração do Windows.0
:($1)1
:-$12
:$-13
:$1-
4
:(1$)5
:-$16
:1-$7
:1$-
8
:-1 $9
:-$ 110
:1 $-11
:$ 1-
12
:$ -113
:1- $14
:($ 1)15
:(1 $)
CurrencyThousandSymbol
:Um único caractere para indicar a separação de milhares em um valor monetário. Se omitido, a configuração do Windows é usada.CurrencyDecimalSymbol
:um único caractere para indicar o decimal de um valor monetário.
Opções de definição de coluna
Vimos como podemos lidar com o formato geral do arquivo, mas precisamos fornecer mais informações sobre a coluna individual. Mais importante, precisamos ser capazes de mapear os tipos de dados esperados das colunas. Portanto, a terceira seção do
schema.ini
deve descrever cada coluna, com tantas linhas quantas forem as colunas no arquivo de texto de destino. O formato geral para a definição de coluna pode ser assim:ColN=Name Type Width #
É importante observar que, exceto pelo prefixo
ColN=
, todas as partes são opcionais, mas se você pode omitir dependerá de outros fatores, conforme discutido abaixo. ColN=
:Um prefixo obrigatório que deve estar em cada início de linha. ON
deve ser um número começando em 1 e aumentando.Name
:dá o nome a uma coluna. Se oColNameHeader
está definido comoTrue
, oName
parâmetro pode ser omitido. No entanto, se forFalse
, então você deve especificar oName
para evitar erros.Type
:Indica o tipo de dados. Se omitido, o Access usará sua melhor estimativa com base nas linhas digitalizadas, regidas peloMaxScanRows
opção. Otype
deve ser definido para um desses valores válidos. Os sinônimos são listados após a palavra-chave canônica:Bit
,Boolean
Byte
Short
,Integer
Long
Currency
Single
Double
,Float
DateTime
Text
,Char
Memo
,LongChar
Date
Width #
:Indica a largura da coluna. Se isso for especificado, o literalWidth
deve ser incluído e seguido de um número. Se você quiser indicar que uma coluna tem 50 caracteres de largura, escreva:
Col17=ProductDescription Text Width 50
Para arquivos de largura fixa, aWidth
é mandatório. Com arquivos delimitados, você pode omiti-lo. No entanto, o Access usará essas informações para campos de texto para limitar o comprimento e possivelmente truncar o conteúdo. Para outros tipos de dados, a largura não tem efeito.
Conclusão
Você viu como controlar o esquema de um arquivo de texto usando um
schema.ini
que você pode criar em uma pasta onde o(s) arquivo(s) de texto reside(m). Você também pode ver que o schema.ini
oferece um controle mais granular sobre as configurações regionais, o que pode ser útil se você estiver lidando com dados internacionais e não puder controlar a moeda ou a formatação da data. No próximo artigo, você verá o método alternativo de descrever a estrutura do arquivo de texto usando as tabelas de sistema do Access.