Migrar datos, . Comillas simples en datos, como evitar errores al migrar datos con comillas simples y otros

02/11/2006 - 16:35 por Wabi | Informe spam
Tengo la version de escritorio de sql server y estoy migrando datos de una
base de datos en access a sql server.
Estoy haciendolo con un pequeño programa y me encuentro que la sentencia sql
me da error al encontrar una comilla siemple en los datos (ej: un apellido
como D'ALESANDRO).
Como puedo solucionar este problema. Disculpen la pregunta que supongo sera
elemental para muchos pero estoy aprendiendo.
Gracias.
Algo mas ¿No es posible definir un campo como autonumerico en la version sql
server de escritorio, pense que era el tipo de datos uniqueidentifier pero
no...?
¿Tampoco cuenta con herramientas para importar datos esta version de
escritorio?
¿De que manera me aconsejan que migre los datos?
Es una tabla bastante grande (90.000 registros)...
para migrar los datos genero un datareader para la tabla de access y luego
lo leo y ejecuto una instruccion insert para cada registros en la tabla de
sql, pero me parece que no debe ser la manera mas eficiente.
Bueno, gracias por la ayuda.

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
02/11/2006 - 16:57 | Informe spam
Wabi,

Como puedo solucionar este problema. Disculpen la pregunta que supongo sera
elemental para muchos pero estoy aprendiendo.



Debes duplicar cada apostrofe.

insert into dbo.t1(c1) values('D''ALESANDRO')

Algo mas ¿No es posible definir un campo como autonumerico en la version sql
server de escritorio, pense que era el tipo de datos uniqueidentifier pero
no...?



Puedes usar una columna tinyint, smallint, int, bigint, numeric y prender la
propiedad IDENTITY

create table dbo.t1 (
c1 int not null identity(1, 1)
...
)

¿Tampoco cuenta con herramientas para importar datos esta version de
escritorio?
¿De que manera me aconsejan que migre los datos?
Es una tabla bastante grande (90.000 registros)...



Yo no he trabajado mucho con esa version, me pregunto si al instalar esta,
tambien se instala el utilitario BCP.EXE

De todas maneras no son muchas filas, asi que tu aplicacion .net no debe
demorar mucho. Te recominedo leas sobre uso de la clase SqlBulkCopy si es que
estas usando ADO.NET 2.0

Performing Bulk Copy Operations
http://msdn2.microsoft.com/en-US/li...5da1a.aspx


AMB


"Wabi" wrote:

Tengo la version de escritorio de sql server y estoy migrando datos de una
base de datos en access a sql server.
Estoy haciendolo con un pequeño programa y me encuentro que la sentencia sql
me da error al encontrar una comilla siemple en los datos (ej: un apellido
como D'ALESANDRO).
Como puedo solucionar este problema. Disculpen la pregunta que supongo sera
elemental para muchos pero estoy aprendiendo.
Gracias.
Algo mas ¿No es posible definir un campo como autonumerico en la version sql
server de escritorio, pense que era el tipo de datos uniqueidentifier pero
no...?
¿Tampoco cuenta con herramientas para importar datos esta version de
escritorio?
¿De que manera me aconsejan que migre los datos?
Es una tabla bastante grande (90.000 registros)...
para migrar los datos genero un datareader para la tabla de access y luego
lo leo y ejecuto una instruccion insert para cada registros en la tabla de
sql, pero me parece que no debe ser la manera mas eficiente.
Bueno, gracias por la ayuda.



Respuesta Responder a este mensaje
#2 BitOne®
03/11/2006 - 01:34 | Informe spam
solo para unirme al hilo.
el modificador QUOTED_IDENTIFIER apagado y encederlo al terminar.


SET QUOTED_IDENTIFIER off
if object_id('tempdb..#j','U') is not null
drop table #j
go
create table #j(
campito char(10)
)
go
insert into #j values ("don'pepito")
go
select * from #j


Saludos,

BitOne®
www.yocsql.com



"Alejandro Mesa" wrote in message
news:
Wabi,

> Como puedo solucionar este problema. Disculpen la pregunta que supongo


sera
> elemental para muchos pero estoy aprendiendo.

Debes duplicar cada apostrofe.

insert into dbo.t1(c1) values('D''ALESANDRO')

> Algo mas ¿No es posible definir un campo como autonumerico en la version


sql
> server de escritorio, pense que era el tipo de datos uniqueidentifier


pero
> no...?

Puedes usar una columna tinyint, smallint, int, bigint, numeric y prender


la
propiedad IDENTITY

create table dbo.t1 (
c1 int not null identity(1, 1)
...
)

> ¿Tampoco cuenta con herramientas para importar datos esta version de
> escritorio?
> ¿De que manera me aconsejan que migre los datos?
> Es una tabla bastante grande (90.000 registros)...

Yo no he trabajado mucho con esa version, me pregunto si al instalar esta,
tambien se instala el utilitario BCP.EXE

De todas maneras no son muchas filas, asi que tu aplicacion .net no debe
demorar mucho. Te recominedo leas sobre uso de la clase SqlBulkCopy si es


que
estas usando ADO.NET 2.0

Performing Bulk Copy Operations
http://msdn2.microsoft.com/en-US/li...5da1a.aspx


AMB


"Wabi" wrote:

> Tengo la version de escritorio de sql server y estoy migrando datos de


una
> base de datos en access a sql server.
> Estoy haciendolo con un pequeño programa y me encuentro que la sentencia


sql
> me da error al encontrar una comilla siemple en los datos (ej: un


apellido
> como D'ALESANDRO).
> Como puedo solucionar este problema. Disculpen la pregunta que supongo


sera
> elemental para muchos pero estoy aprendiendo.
> Gracias.
> Algo mas ¿No es posible definir un campo como autonumerico en la version


sql
> server de escritorio, pense que era el tipo de datos uniqueidentifier


pero
> no...?
> ¿Tampoco cuenta con herramientas para importar datos esta version de
> escritorio?
> ¿De que manera me aconsejan que migre los datos?
> Es una tabla bastante grande (90.000 registros)...
> para migrar los datos genero un datareader para la tabla de access y


luego
> lo leo y ejecuto una instruccion insert para cada registros en la tabla


de
> sql, pero me parece que no debe ser la manera mas eficiente.
> Bueno, gracias por la ayuda.
>
>
>
Respuesta Responder a este mensaje
#3 Wabi
07/11/2006 - 01:19 | Informe spam
Encontre una solucion a mi problema en el foto de VBNET.
Lo que me aconsejaron es lo siguiente y funciona bien:


Aunque el problema se resuelve duplicando la comilla, la forma
recomendada de evitar estos y otros problemas consiste en no concatenar
nunca datos de usuario con la sentencia. en su lugar, lo que se hace es
parametrizar la sentencia y asignar tu dato al parámetro:

Dim sentencia as string = "Insert into miTabla values (@valor)"
Dim comando as New SqlCommand(sentencia, conexion)
comando.Parameters.Add("@valor", "D'Alesandro")
comando.ExecuteNonQuery()
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida