DTS import/export

venerdì 27 aprile 2007 - 13.07

bluland Profilo | Guru

Ho provato ad usare il wizard import/export di Sql2000, per copiare alcune tabelle da un db postgress a Sql 2000 ma ricevo il seguente errore, cercando di copiare alcune tabelle:
Error Source: Microsoft OLE DB Provider fo ODBC Drivers

Error Description: Out Of memory while reading tuples;
Error while executing the query

Context: Error calling OpenRowset on the provider


che ne dite si puo' fare qualcosa per trasferire queste tabelle??


saluti
--------------------
Vincenzo PESANTE

lbenaglia Profilo | Guru

>che ne dite si puo' fare qualcosa per trasferire queste tabelle??

Ciao Vincenzo,

hai provato ad esportare su file i dati delle tabelle PostgreSQL in formato CSV e ad importarli in SQL Server utilizzando una BULK INSERT o tramite bcp.exe?

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

bluland Profilo | Guru

si avevo pensato a questa soluzione, infatti stavo cercando di imparare ad usarli
poi ho scoperto che quelle tabelle che mi davano problemi per la troppa quantita di tuple posso anche fare di importarle , ora non mi resta che importare le tabelle con una procedura automatica.
Che ne pensi se faccio un Job dove scrivo per ogni tabella da importare una query di questo tipo:

SELECT * INTO TABELLA1SQL FROM OPENQUERY(POSTGRESS, SELECT * FROM TABELLA1POSTGRESS)

Che ne pensi??
--------------------
Vincenzo PESANTE

lbenaglia Profilo | Guru

>Che ne pensi se faccio un Job dove scrivo per ogni tabella da
>importare una query di questo tipo:
>
>SELECT * INTO TABELLA1SQL FROM OPENQUERY(POSTGRESS, SELECT *
>FROM TABELLA1POSTGRESS)
>
>Che ne pensi??

Ciao Vincenzo,

Le operazioni bulk sono di gran lunga preferibili per questo genere di operazioni.
Se utilizzi la funzione OPENQUERY() significa che hai definito un linked server, giusto?
Dato che la query remota è una semplice SELECT * senza alcuna clausola WHERE, probabilmente potresti limitarti ad utilizzare il four-part name:

SELECT * INTO dbo.TABELLA1SQL
FROM POSTGRESS.<db>.<schema>.TABELLA1POSTGRESS;

Tieni presente che la SELECT...INTO ti genera una nuova tabella senza però trasferire eventuali indici/constraint.

Se vuoi il mio consiglio, genera a priori lo schema degli oggetti, esporta i dati delle tabelle PostgreSQL in file ASCII, importali via BULK INSERT in SQL Server ed applica indici e constraint alle tabelle.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

bluland Profilo | Guru

>Se vuoi il mio consiglio, genera a priori lo schema degli oggetti,
>esporta i dati delle tabelle PostgreSQL in file ASCII, importali
>via BULK INSERT in SQL Server ed applica indici e constraint
>alle tabelle.

fortunatamente quello che mi interessa sono solo i dati delle tabelle , che porto in Sql 2000 cosi ci posso lavorare tranquillamente dato che ho avuto qualche problemino a lavorare da Sql 2000 su Postgress.
I dati delle tabelle postgres dopo opportune query devono essere importati in alcune tabelle Sql 2000, l'unica cosa e' che devo cercare di tenere sempre aggiornati questi dati, per questo avevo pensato ad una semplice Insert into, il problema sorge poi con l'aggiornamento non so se usare gli outer join oppure importare le tabelle aggiornate in un db temp Sql e poi droppare le vecchie tabelle sql e ricrearle partendo da quelle temp con il solito INSERT INTO.


Ciao, e grazie
--------------------
Vincenzo PESANTE
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5