/******* Exportar a excel
exec master..xp_cmdshell 'bcp asentamientob.dbo.shanghu fuera c:temp1.xls -c -q -s"gnetdata/gnetdata" -u"sa" -p""'
/*********** Importar excel
seleccionar *
de opendatasource('microsoft.jet.oledb.4.0',
'fuente de datos="c:test.xls";id de usuario=admin;contraseña=;propiedades extendidas=excel 5.0')...xacciones
seleccione cast(cast(número de cuenta como numérico(10,2)) como nvarchar(255))+'' alias convertido
de opendatasource('microsoft.jet.oledb.4.0',
'fuente de datos="c:test.xls";id de usuario=admin;contraseña=;propiedades extendidas=excel 5.0')...xacciones
/** Importar archivo de texto
exec master..xp_cmdshell 'bcp dbname..tablename en c:dt.txt -c -sservername -usa -ppassword'
/** Exportar archivo de texto
exec master..xp_cmdshell 'bcp "dbname..tablename" out c:dt.txt -c -sservername -usa -ppassword'
Esta oración debe estar entre comillas.
o
exec master..xp_cmdshell 'bcp "select * from dbname..tablename" consulta c:dt.txt -c -sservername -usa -ppassword'
Exportar a texto txt, separado por comas
exec master..xp_cmdshell 'bcp "Nombre de la biblioteca... Nombre de la tabla" out "d:tt.txt" -c -t ,-u sa -p contraseña'
nombre de biblioteca de inserción masiva... nombre de tabla
de 'c:prueba.txt'
con (
terminador de campo = ';',
terminador de fila = 'n'
)
--/* archivo dbase iv
seleccione * de
openrowset('microsoft.jet.oledb.4.0'
,'dbase iv;hdr=no;imex=2;database=c:','select * from [Datos del cliente 4.dbf]')
--*/
--/* archivo dbaseiii
seleccione * de
openrowset('microsoft.jet.oledb.4.0'
,'dbase iii;hdr=no;imex=2;database=c:','select * from [Datos del cliente 3.dbf]')
--*/
--/* base de datos foxpro
seleccione * de openrowset('msdasql',
'controlador=controlador de microsoft visual foxpro;sourcetype=dbf;sourcedb=c:',
'seleccione * de [aa.dbf]')
--*/
/******************Importar archivo dbf******************/
seleccione * de openrowset('msdasql',
'controlador=controlador de microsoft visual foxpro;
fuentedb=e:vfp98data;
tipo de fuente=dbf',
'seleccione * del cliente donde país! = "usa" ordenar por país')
ir
/************************ Exportar a dbf **************/
Si desea exportar datos a la tabla foxpro de estructura generada (es decir, existente), puede utilizar directamente la siguiente instrucción SQL
insertar en openrowset('msdasql',
'controlador=controlador de microsoft visual foxpro;sourcetype=dbf;sourcedb=c:',
'seleccione * de [aa.dbf]')
seleccione * de la tabla
ilustrar:
sourcedb=c: especifica la carpeta donde se encuentra la tabla foxpro
aa.dbf especifica el nombre de archivo de la tabla foxpro.
/******************Exportar para acceder**********************/
insertar en openrowset('microsoft.jet.oledb.4.0',
'x:a.mdb';'admin';'',una tabla) seleccione * del nombre de la base de datos...b tabla
/******************acceso de importación************************/
insertar en la tabla b selet * de openrowset('microsoft.jet.oledb.4.0',
'x:a.mdb';'admin';'',una tabla)
********************** Importar archivo xml
declarar @idoc int
declarar @doc varchar(1000)
--documento xml de muestra
establecer @doc ='
<raíz>
<cliente cid= "c1" nombre="janine" ciudad="issaquah">
<orden id="o1" fecha="20/1/1996" cantidad="3,5" />
<order id="o2" date="4/30/1997" cantidad="13.4">el cliente quedó muy satisfecho
</orden>
</cliente>
<cliente cid="c2" nombre="ursula" ciudad="oelde" >
<orden id="o3" fecha="14/7/1999" cantidad="100" nota="envuélvelo en azul
blanco rojo">
<urgencia>importante</urgencia>
cliente feliz.
</orden>
<orden id="o4" fecha="20/1/1996" cantidad="10000"/>
</cliente>
</raíz>
'
-- crear una representación interna del documento xml.
ejecutivo sp_xml_preparedocument @idoc salida, @doc
- ejecutar una declaración de selección utilizando el proveedor de conjuntos de filas openxml.
seleccionar *
de openxml (@idoc, '/root/cliente/pedido', 1)
con (oid char(5),
cantidad flotante,
comentario ntext 'texto()')
ejecutivo sp_xml_removedocument @idoc
/************************Importar toda la base de datos************************ ***** *******************/
Procedimiento almacenado implementado usando bcp
/*
Implementar procedimientos almacenados para la importación/exportación de datos.
Según diferentes parámetros, puede importar/exportar toda la base de datos/ejemplo de llamada de tabla única:
--ejemplo de llamada de exportación
----Exportar una sola tabla
exec file2table 'zj','','','xzkh_sa..información de región','c:zj.txt',1
----Exportar toda la base de datos
archivo ejecutivo2table 'zj','','','xzkh_sa','c:docman',1
--Ejemplo de llamada de importación
----Importar una sola tabla
exec file2table 'zj','','','xzkh_sa..información de región','c:zj.txt',0
----Importar toda la base de datos
archivo ejecutivo2table 'zj','','','xzkh_sa','c:docman',0
*/
si existe (seleccione 1 de sysobjects donde nombre='file2table' y objectproperty(id,'isprocedure')=1)
soltar procedimiento file2table
ir
crear procedimiento file2table
@servername varchar(200) --nombre del servidor
,@nombredeusuario varchar(200) --Nombre de usuario, si usa el método de verificación nt, estará vacío''
,@contraseña varchar(200) --Contraseña
,@tbname varchar(500) --database.dbo.table name Si no especifica:.dbo.table name, se exportarán todas las tablas de usuario de la base de datos.
,@filename varchar(1000) --Importar/exportar ruta/nombre de archivo Si el parámetro @tbname indica exportar toda la base de datos, entonces este parámetro es la ruta de almacenamiento del archivo y el nombre del archivo usa automáticamente el nombre de la tabla.txt.
, @isout bit --1 es exportación, 0 es importación
como
declarar @sql varchar(8000)
si @tbname es como '%.%.%': si se especifica un nombre de tabla, se exportará una sola tabla directamente
comenzar
establecer @sql='bcp '+@tbname
+caso cuando @isout=1 luego 'fuera' más 'en' fin
+' " '+@nombredearchivo+' " /w'
+' /s '+@nombredelservidor
+caso cuando es nulo(@nombredeusuario,'')='' luego '' else ' /u '+@nombre de usuario final
+' /p '+es nulo(@contraseña,'')
maestro ejecutivo..xp_cmdshell @sql
fin
demás
comenzar: exportar toda la base de datos, definir cursores y eliminar todas las tablas de usuario
declarar @m_tbname varchar(250)
si es correcto(@nombredearchivo,1)<>'' set @nombredearchivo=@nombredearchivo+''
set @m_tbname='declarar #tb cursor para seleccionar nombre de '+@tbname+'..sysobjects donde xtype=''u'''
ejecutivo(@m_tbname)
abrir #tb
buscar siguiente desde #tb a @m_tbname
mientras @@fetch_status=0
comenzar
establecer @sql='bcp '+@tbname+'..'+@m_tbname
+caso cuando @isout=1 luego 'fuera' más 'en' fin
+' " '+@nombredearchivo+@m_tbname+'.txt " /w'
+' /s '+@nombredelservidor
+caso cuando es nulo(@nombredeusuario,'')='' luego '' else ' /u '+@nombre de usuario final
+' /p '+es nulo(@contraseña,'')
maestro ejecutivo..xp_cmdshell @sql
buscar siguiente desde #tb a @m_tbname
fin
cerrar #tb
desasignar #tb
fin
ir
/************************excel a txt********************** ****** *******************/
quiero usar
seleccione * en opendatasource(...) desde opendatasource(...)
Implementación de importar el contenido de un archivo de Excel a un archivo de texto.
Supongamos que hay dos columnas en Excel, la primera columna es el nombre y la segunda columna es el número de cuenta (16 dígitos)
Y el número de cuenta bancaria se divide en dos partes después de exportarlo a un archivo de texto, los primeros 8 dígitos y los últimos 8 dígitos están separados.
Si desea insertarlo usando la declaración anterior, el archivo de texto debe existir y tener una línea: nombre, número de cuenta bancaria 1, número de cuenta bancaria 2
Luego puede usar la siguiente declaración para insertar. Tenga en cuenta que el nombre del archivo y el directorio se pueden modificar de acuerdo con su situación real.
insertar en
opendatasource('microsoft.jet.oledb.4.0'
,'texto;hdr=yes;base de datos=c:'
)...[aa#txt]
--,aa#txt)
--*/
seleccione nombre, número de cuenta bancaria 1=izquierda (número de cuenta bancaria, 8), número de cuenta bancaria 2 = derecha (número de cuenta bancaria, 8)
de
opendatasource('microsoft.jet.oledb.4.0'
,'excel 5.0;hdr=yes;imex=2;base de datos=c:a.xls'
--,hoja1$)
)...[hoja1$]
Si desea insertar y generar archivos de texto directamente, use bcp
declarar @sql varchar(8000),@tbname varchar(50)
--Primero importe el contenido de la tabla de Excel a una tabla temporal global
seleccione @tbname='[##temp'+cast(newid() as varchar(40))+']'
,@sql='seleccione nombre, número de cuenta bancaria 1=izquierda (número de cuenta bancaria, 8), número de cuenta bancaria 2 = derecha (número de cuenta bancaria, 8)
en '+@tbname+' desde
opendatasource(''microsoft.jet.oledb.4.0''
,''excel 5.0;hdr=yes;imex=2;base de datos=c:a.xls''
)...[hoja1$]'
ejecutivo(@sql)
--Luego use bcp para exportar desde la tabla temporal global a un archivo de texto
set @sql='bcp " '+@tbname+' " out "c:aa.txt" /s"(local)" /p"" /c'
maestro ejecutivo..xp_cmdshell @sql
--Eliminar tabla temporal
ejecutivo('eliminar tabla '+@tbname )
Procedimiento almacenado para importar y exportar archivos a la base de datos usando bcp:
/*--bcp-Importación y exportación de archivos binarios
Admite importación/exportación de campos de imagen, texto y ntext
image es adecuado para archivos de texto binarios, ntext es adecuado para archivos de datos de texto;
Nota: Al importar, se sobrescribirán todas las filas que cumplan las condiciones.
Al exportar, todas las líneas que cumplan las condiciones también se exportarán al archivo especificado.
Este procedimiento almacenado sólo utiliza bcp para implementar Zou Jian 2003.08-----------------*/
/*--Ejemplo de llamada
--Exportación de datos
exec p_binaryio 'zj','','','acc_demo data..tb','img','c:zj1.dat'
--Exportación de datos
exec p_binaryio 'zj','','','acc_demo data..tb','img','c:zj1.dat','',0
--*/
si existe (seleccione * de dbo.sysobjects donde id = object_id(n'[dbo].[p_binaryio]') y objectproperty(id, n'isprocedure') = 1)
procedimiento de caída [dbo].[p_binaryio]
ir
crear proc p_binaryio
@servename varchar (30),--nombre del servidor
@nombre de usuario varchar (30), --nombre de usuario
@contraseña varchar (30), --contraseña
@tbname varchar (500), --database..nombre de tabla
@fdname varchar (30), --Nombre del campo
@fname varchar (1000), --directorio + nombre de archivo, usar/sobrescribir durante el procesamiento: @filename+.bak
@tj varchar (1000)='', --condiciones de procesamiento Para la importación de datos, si la condición contiene @fdname, especifique el prefijo del nombre de la tabla.
@isout bit=1 --1 exportar ((predeterminado), 0 importar
como
declarar @fname_in varchar(1000) --bcp procesando el nombre del archivo de respuesta
,@fsize varchar(20) --El tamaño del archivo a procesar
,@m_tbname varchar(50) --nombre de tabla temporal
,@sqlvarchar(8000)
--Obtener el tamaño del archivo importado
si @isout=1
establecer @fsize='0'
demás
comenzar
crear tabla #tb (nombre opcional varchar (20), tamaño int
, fecha de creación varchar(10), hora de creación varchar(20)
, fecha de la última operación de escritura varchar(10), hora de la última operación de escritura varchar(20)
, fecha del último acceso varchar(10), hora del último acceso varchar(20), característica int)
insertar en #tb
maestro ejecutivo..xp_getfiledetails @fname
seleccione @fsize=tamaño de #tb
mesa desplegable #tb
si @fsize es nulo
comenzar
imprimir 'Archivo no encontrado'
devolver
fin
fin
--Generar archivo de respuesta de procesamiento de datos
establecer @m_tbname='[##temp'+cast(newid() as varchar(40))+']'
establecer @sql='select * into '+@m_tbname+' from(
seleccione nulo como tipo
unión todos seleccionan 0 como prefijo
unión todos seleccionan '+@fsize+' como longitud
unión todos seleccionan nulo como final
unión todos seleccionan nulo como formato
) a'
ejecutivo(@sql)
seleccione @fname_in=@fname+'_temp'
,@sql='bcp " '+@m_tbname+' " fuera " '+@fname_in
+'" /s" '+@nombredeservido
+caso cuando es nulo(@nombre de usuario,'')='' y luego ''
else '" /u" '+@nombre de usuario fin
+'" /p"'+es nulo(@contraseña,'')+'" /c'
maestro ejecutivo..xp_cmdshell @sql
--Eliminar tabla temporal
establecer @sql='eliminar tabla '+@m_tbname
ejecutivo(@sql)
si @isout=1
comenzar
set @sql='bcp "selecciona los 1 primeros '+@fdname+' de '
+@tbname+case isnull(@tj,'') cuando '' entonces ''
else 'dónde '+@tj final
+'" consulta " '+@fname
+'" /s" '+@nombredeservido
+caso cuando es nulo(@nombre de usuario,'')='' y luego ''
else '" /u" '+@nombre de usuario fin
+'" /p"'+es nulo(@contraseña,'')
+'" /i" '+@fname_in+'"'
maestro ejecutivo..xp_cmdshell @sql
fin
demás
comenzar
--Preparar tablas temporales para la importación de datos.
set @sql='select top 0 '+@fdname+' en '
+@m_tbname+' de ' +@tbname
ejecutivo(@sql)
--Importar datos a una tabla temporal
establecer @sql='bcp " '+@m_tbname+' " en " '+@fname
+'" /s" '+@nombredeservido
+caso cuando es nulo(@nombre de usuario,'')='' y luego ''
else '" /u" '+@nombre de usuario fin
+'" /p"'+es nulo(@contraseña,'')
+'" /i" '+@fname_in+'"'
maestro ejecutivo..xp_cmdshell @sql
--Importar datos en tablas formales
establecer @sql='actualizar '+@tbname
+' set '+@fdname+'=b.'+@fdname
+' de '+@tbname+' a,'
+@m_tbname+' b'
+case isnull(@tj,'') cuando '' entonces ''
else ' donde '+@tj finaliza
ejecutivo(@sql)
--Eliminar tabla temporal de procesamiento de datos
establecer @sql='eliminar tabla '+@m_tbname
fin
--Eliminar archivo de respuesta de procesamiento de datos
establecer @sql='del '+@fname_in
maestro ejecutivo..xp_cmdshell @sql