Una duda!

30/04/2004 - 17:38 por Jorge Luis Medrano | Informe spam
Buenos Días, yo me acabo de suscribir a esta cuenta a fin de aprender más
sobre este lenguaje, bueno, mi pregunta es esta:

¿Es posible en sql leer un archivo plano y migrarlo a una tabla de sql sin
usar el dts ?

muchas gracias!!!!
 

Leer las respuestas

#1 Maxi
30/04/2004 - 18:02 | Informe spam
Hola, primero te doy la bienvenida al grupo, aca encontraras a muy buenos
profesionales de verdad :-)

Claro que se puede

Sacado de los BOL

BULK INSERT
Copia un archivo de datos a una tabla o vista de base de datos en un formato
especificado por el usuario.

Sintaxis
BULK INSERT [ [ 'database_name'.] [ 'owner' ].] { 'table_name' FROM
'data_file' }
[WITH
(
[ BATCHSIZE [ = batch_size ] ]
[ [ , ] CHECK_CONSTRAINTS ]
[ [ , ] CODEPAGE [ = 'ACP' | 'OEM' | 'RAW' | 'code_page' ] ]
[ [ , ] DATAFILETYPE [ { 'char' | 'native'| 'widechar' | 'widenative' } ] ]
[ [ , ] FIELDTERMINATOR [ = 'field_terminator' ] ]
[ [ , ] FIRSTROW [ = first_row ] ]
[ [ , ] FIRE_TRIGGERS ]
[ [ , ] FORMATFILE = 'format_file_path' ]
[ [ , ] KEEPIDENTITY ]
[ [ , ] KEEPNULLS ]
[ [ , ] KILOBYTES_PER_BATCH [ = kilobytes_per_batch ] ]
[ [ , ] LASTROW [ = last_row ] ]
[ [ , ] MAXERRORS [ = max_errors ] ]
[ [ , ] ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) ]
[ [ , ] ROWS_PER_BATCH [ = rows_per_batch ] ]
[ [ , ] ROWTERMINATOR [ = 'row_terminator' ] ]
[ [ , ] TABLOCK ]
)
]

Argumentos
'database_name'

Es el nombre de la base de datos en la que reside la tabla o vista
especificada. Si no se especifica, es la base de datos actual.

'owner'

Es el nombre del propietario de la tabla o vista. El argumento owner es
opcional si el usuario que realiza la copia masiva es propietario de la
tabla o vista especificada. Si no se especifica el argumento owner y el
usuario que realiza la copia masiva no es propietario de la tabla o de la
vista especificada, Microsoft® SQL ServerT devuelve un mensaje de error y se
cancela la operación de copia masiva.

'table_name'

Es el nombre de la tabla o vista en la que se va a realizar una copia masiva
de datos. Sólo se pueden utilizar vistas en que todas las columnas hagan
referencia a la misma tabla base. Para obtener más información acerca de las
restricciones para la copia de datos en vistas, consulte INSERT.

'data_file'

Es la ruta de acceso completa del archivo de datos que contiene los datos
que se van a copiar a la tabla o vista especificada. BULK INSERT puede
copiar datos de un disco (incluidos una red, disquete, disco duro, etc.).

El argumento data_file debe especificar una ruta de acceso válida del
servidor en que se ejecuta SQL Server. Si data_file es un archivo remoto,
especifique un nombre de Convención de nomenclatura universal (UNC).

BATCHSIZE [ = batch_size ]

Especifica el número de filas de un lote. Cada lote se copia en el servidor
como una transacción. SQL Server confirma o, en caso de error, deshace la
transacción para cada lote. De forma predeterminada, todos los datos del
archivo de datos especificado componen un lote.

CHECK_CONSTRAINTS

Especifica que, durante la operación de copia masiva, se comprueba la
existencia de restricciones en table_name. De forma predeterminada, las
restricciones se pasan por alto.

CODEPAGE [ = 'ACP' | 'OEM' | 'RAW' | 'code_page' ]

Especifica la página de códigos de los datos incluidos en el archivo de
datos. CODEPAGE sólo es relevante si los datos contienen columnas de tipo
char, varchar o text con valores de caracteres mayores que 127 o menores que
32.

valor de CODEPAGE Descripción
ACP Las columnas de los tipos de datos char, varchar y text se
convierten de la página de códigos ANSI/Microsoft Windows® (ISO 1252) a la
página de códigos de SQL Server.
OEM (valor predeterminado) Las columnas de los tipos de datos char,
varchar y text se convierten de la página de códigos de sistema OEM a la
página de códigos de SQL Server.
RAW No se realiza conversión de una página de códigos a otra; ésta es
la opción más rápida.
code_page Número específico de una página de códigos, por ejemplo,
850.


DATAFILETYPE [ = {'char' | 'native' | 'widechar' | 'widenative' } ]

Especifica que BULK INSERT realiza la operación de copia con el valor
predeterminado especificado.

valor de DATAFILETYPE Descripción
char (predeterminado) Realiza la operación de copia masiva de un
archivo de datos que contiene datos de caracteres.
nativo Realiza la operación de copia masiva con los tipos de datos
native (base de datos). El archivo de datos que se va a cargar se creó
mediante una copia masiva de datos desde SQL Server con la herramienta bcp.
widechar Realiza la operación de copia masiva de un archivo de datos
que contiene caracteres Unicode.
widenative Realiza la misma operación de copia masiva que native,
excepto que las columnas de tipo char, varchar y text se almacenan como
Unicode en el archivo de datos. El archivo de datos que se va a cargar se
creó mediante una copia masiva de datos desde SQL Server con la herramienta
bcp. Esta opción es una alternativa de mayor rendimiento que la opción
widechar y su propósito es la transferencia de datos de un equipo que
ejecuta SQL Server a otro mediante un archivo de datos. Utilice esta opción
cuando vaya a transferir datos que contienen caracteres ANSI extendidos y
desee aprovechar el rendimiento del modo native.


FIELDTERMINATOR [ = 'field_terminator' ]

Especifica el terminador de campo que se utilizará para los archivos de
datos de tipo char y widechar. El valor predeterminado es \t (carácter de
tabulador).

FIRSTROW [ = first_row ]

Especifica el número de la primera fila que se va a copiar. El valor
predeterminado es 1, que hace referencia a la primera fila del archivo de
datos especificado.

FIRE_TRIGGERS

Especifica que se ejecutarán todos los desencadenadores de inserción
definidos en la tabla de destino durante la operación de copia masiva. Si no
se especifica FIRE_TRIGGERS, no se ejecutará ningún desencadenador.

FORMATFILE [ = 'format_file_path' ]

Especifica la ruta de acceso completa de un archivo de formato. Un archivo
de formato describe el contenido del archivo de datos que contiene
respuestas almacenadas creadas con la herramienta bcp en la misma tabla o
vista. Se debe utilizar el archivo de formato en los casos en que:

a.. El archivo de datos contiene un número de columnas mayor o menor que
la tabla o vista.


b.. Las columnas están en un orden diferente.


c.. Los delimitadores de columnas varían.


d.. Hay otros cambios en el formato de los datos. Los archivos de formato
se suelen crear con la herramienta bcp y se modifican con un editor de texto
si es necesario. Para obtener más información, consulte Herramienta bcp.
KEEPIDENTITY

Especifica que los valores de una columna de identidad están presentes en el
archivo que se importa. Si no se especifica KEEPIDENTITY, se omiten los
valores de identidad de esta columna en el archivo de datos que se importa y
SQL Server asigna automáticamente valores únicos basados en los valores de
inicialización y de incremento especificados durante la creación de la
tabla. Si el archivo de datos no contiene valores para la columna de
identidad de la tabla o vista, utilice un archivo de formato para
especificar que se debe omitir la columna de identidad de la tabla o vista
al importar los datos; SQL Server asigna automáticamente valores únicos para
la columna. Para obtener más información, consulte DBCC CHECKIDENT.

KEEPNULLS

Especifica que las columnas vacías deben conservar un valor NULL durante la
operación de copia masiva, en vez de tener valores predeterminados para las
columnas insertadas.

KILOBYTES_PER_BATCH [ = kilobytes_per_batch ]

Especifica el número aproximado de kilobytes (KB) de datos por lote (como
kilobytes_per_batch). De forma predeterminada, el valor de
KILOBYTES_PER_BATCH es desconocido.

LASTROW [ = last_row ]

Especifica el número de la última fila que se va a copiar. El valor
predeterminado es 0, que hace referencia a la última fila del archivo de
datos especificado.

MAXERRORS [ = max_errors ]

Especifica el número máximo de errores que pueden producirse antes de que se
cancele la operación de copia masiva. Cada fila que no pueda importarse con
la operación de copia masiva se pasa por alto y se considera como un error.
Si no se especifica el argumento max_errors, el valor predeterminado es 10.

ORDER ( { column [ ASC | DESC ] } [ ,...n ] )

Especifica la forma en que están ordenados los datos del archivo de datos.
El rendimiento de la operación de copia masiva mejora si los datos cargados
se ordenan según el índice agrupado de la tabla. Si el archivo de datos
tiene un orden distinto o si no hay un índice agrupado en la tabla, se
pasará por alto la cláusula ORDER. Los nombres de columna facilitados deben
ser columnas válidas en la tabla de destino. De forma predeterminada, la
operación de inserción masiva asume que los datos del archivo no están
ordenados.

n

Es un marcador de posición que indica que se pueden especificar varias
columnas.

ROWS_PER_BATCH [ = rows_per_batch ]

Especifica el número de filas de datos por lote (como rows_per_batch). Se
utiliza cuando no se especifica BATCHSIZE y, por lo tanto, se envía el
archivo de datos completo al servidor en una sola transacción. El servidor
optimiza la carga de la copia masiva según el valor rows_per_batch. De forma
predeterminada, el valor de ROWS_PER_BATCH es desconocido.

ROWTERMINATOR [ = 'row_terminator' ]

Especifica el terminador de fila que se va a utilizar para archivos de datos
de tipo char y widechar. El valor predeterminado es (carácter de nueva
línea).

TABLOCK

Especifica que se obtiene un bloqueo de tabla durante la operación de copia
masiva. Varios clientes pueden cargar una tabla simultáneamente si ésta no
tiene índices y se especifica TABLOCK. De forma predeterminada, el
comportamiento del bloqueo viene determinado por la opción de tabla table
lock on bulk load (bloqueo de tabla en cargas masivas). Al mantener un
bloqueo únicamente durante la operación de copia masiva, se reducen los
conflictos por bloqueo de la tabla y, por tanto, mejora notablemente el
rendimiento.

Observaciones
La instrucción BULK INSERT se puede ejecutar en una transacción definida por
el usuario. Si se deshace una transacción definida por el usuario que
utiliza una instrucción BULK INSERT y una cláusula BATCHSIZE para cargar
datos en una tabla o vista con varios lotes, se deshacen todos los lotes
enviados a SQL Server.

Permisos
Sólo los miembros de las funciones fijas de servidor sysadmin y bulkadmin
pueden ejecutar BULK INSERT.

Ejemplos
Este ejemplo importa información de detalle de pedidos del archivo de datos
especificado mediante una canalización (|) como terminador de campo y |
como terminador de fila.

BULK INSERT Northwind.dbo.[Order Details]
FROM 'f:\orders\lineitem.tbl'
WITH
(
FIELDTERMINATOR = '|',
ROWTERMINATOR = '|'
)
Este ejemplo especifica el argumento FIRE_TRIGGERS.

BULK INSERT Northwind.dbo.[Order Details]
FROM 'f:\orders\lineitem.tbl'
WITH
(
FIELDTERMINATOR = '|',
ROWTERMINATOR = ':',
FIRE_TRIGGERS
)



Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Jorge Luis Medrano" escribió en el mensaje
news:
Buenos Días, yo me acabo de suscribir a esta cuenta a fin de aprender más
sobre este lenguaje, bueno, mi pregunta es esta:

¿Es posible en sql leer un archivo plano y migrarlo a una tabla de sql sin
usar el dts ?

muchas gracias!!!!







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.661 / Virus Database: 424 - Release Date: 19/04/2004

Preguntas similares