DOMANDA E' possibile Importare un txt in un Db Sql server tramite una macro di un Db Access?

Pubblicità
puoi consigliarmi un software free che riesce ad aprire un txt da 3gb ? l'unico che ho trovato è "LogViewerPro" , ma magari mi sfalza la formattazione

- - - Updated - - -

Perchè come dice l'errore "Verifica che i delimitatore di campo e di riga siano specificati corretamente"
ma il problema mi sa che è il "\t" che non viene trovato nel file txt.

\t equivale al TAB

Ciao siccome non sono presenti TAB o altro per distinguere le varie colonne ho provato a fare così:

Codice:
10.0
14
1       SQLCHAR             0       3       ""     1     IDMAR          Latin1_General_CI_AS
2       SQLCHAR             0       3       ""     2     IDMOD          Latin1_General_CI_AS
3       SQLCHAR             0       3       ""     3     IDVER          Latin1_General_CI_AS
4       SQLCHAR             0       20      ""     4     PARNO          Latin1_General_CI_AS
5       SQLCHAR             0       4       ""     5     IDPAR          Latin1_General_CI_AS
6       SQLCHAR             0       1       ""     6     TPPAR          Latin1_General_CI_AS
7       SQLCHAR             0       4       ""     7     IDSIM          Latin1_General_CI_AS
8       SQLCHAR             0       30      ""     8     ULTDS          Latin1_General_CI_AS
9       SQLCHAR             0       40      ""     9     PECOS          Latin1_General_CI_AS
10      SQLCHAR             0       100     ""     10    COLOR          Latin1_General_CI_AS
11      SQLCHAR             0       12      ""     11    PRZLI          Latin1_General_CI_AS
12      SQLCHAR             0       1       ""     12    STSPN          Latin1_General_CI_AS
13      SQLCHAR             0       4       ""     13    IDGRU          Latin1_General_CI_AS
14      SQLCHAR             0       1       ""     14    Tappo          Latin1_General_CI_AS

ho rimosso ogni parametro tra le virgolette. Infatti adesso la query si esegue anche se dopo un pò (ho preso uno stralcio di file di 50Mb) mi da questo errore:

Codice:
(0 row(s) affected)
[COLOR=#ff0000]Msg 4832, Level 16, State 1, Line 1
Bulk load: An unexpected end of file was encountered in the data file.
Msg 7399, Level 16, State 1, Line 1
The OLE DB provider "BULK" for linked server "(null)" reported an error. The provider did not give any information about the error.
Msg 7330, Level 16, State 2, Line 1
Cannot fetch a row from OLE DB provider "BULK" for linked server "(null)".[/COLOR]

(0 row(s) affected)

Tu riesci a vedere qualche spiraglio di soluzione?
L'idea mi è venuta leggendo qui : Forum [sql] BULK INSERT [fixed field] | Archivio del forum HTML.it
 
Aggiungi alla sql questa riga
Codice:
WITH(ERRORFILE = 'error.log')
Ti restituisce la riga e l'offset dove hai l'errore.
Così puoi vedere se il problema è nel file oppure se serve una restrinzione
 
Aggiungi alla sql questa riga
Codice:
WITH(ERRORFILE = 'error.log')
Ti restituisce la riga e l'offset dove hai l'errore.
Così puoi vedere se il problema è nel file oppure se serve una restrinzione

:grat: Perdonami ma forse non ben capito:

questa è la query

Codice:
USE Listini_Ricambi;
GO
DELETE dbo.Listini_versione_import;
GO
BULK INSERT dbo.Listini_versione_import
   from 'C:\Db_Listini_Ricambi\Listino\T_Listini_versione.txt.001.txt'
   with ( formatfile = 'C:\Db_Listini_Ricambi\FormatFile\temp_FormatFile.fmt', [COLOR=#ff0000]ERRORFILE = 'error.log[/COLOR]');
GO
SELECT * FROM Listini_versione_import;
GO

e questo è il messaggio di errore:

Codice:
(0 row(s) affected)
[COLOR=#ff0000]Msg 4861, Level 16, State 1, Line 1
Cannot bulk load because the file "error.log" could not be opened. Operating system error code 5(Accesso negato.).
Msg 4861, Level 16, State 1, Line 1
Cannot bulk load because the file "error.log.Error.Txt" could not be opened. Operating system error code 5(Accesso negato.).
[/COLOR]
(0 row(s) affected)
 
:grat: Perdonami ma forse non ben capito:

questa è la query

Codice:
USE Listini_Ricambi;
GO
DELETE dbo.Listini_versione_import;
GO
BULK INSERT dbo.Listini_versione_import
   from 'C:\Db_Listini_Ricambi\Listino\T_Listini_versione.txt.001.txt'
   with ( formatfile = 'C:\Db_Listini_Ricambi\FormatFile\temp_FormatFile.fmt', [COLOR=#ff0000]ERRORFILE = 'error.log[/COLOR]');
GO
SELECT * FROM Listini_versione_import;
GO

e questo è il messaggio di errore:

Codice:
(0 row(s) affected)
[COLOR=#ff0000]Msg 4861, Level 16, State 1, Line 1
Cannot bulk load because the file "error.log" could not be opened. Operating system error code 5(Accesso negato.).
Msg 4861, Level 16, State 1, Line 1
Cannot bulk load because the file "error.log.Error.Txt" could not be opened. Operating system error code 5(Accesso negato.).
[/COLOR]
(0 row(s) affected)

Devi indicare l'intero percorso


USE Listini_Ricambi;
GO
DELETE dbo.Listini_versione_import;
GO
BULK INSERT dbo.Listini_versione_import
from 'C:\Db_Listini_Ricambi\Listino\T_Listini_versione.txt.001.txt'
with (formatfile = 'C:\Db_Listini_Ricambi\FormatFile\temp_FormatFile.fmt', ERRORFILE = 'C:\error.log');
GO
SELECT * FROM Listini_versione_import;
GO
 
Devi indicare l'intero percorso


USE Listini_Ricambi;
GO
DELETE dbo.Listini_versione_import;
GO
BULK INSERT dbo.Listini_versione_import
from 'C:\Db_Listini_Ricambi\Listino\T_Listini_versione.txt.001.txt'
with (formatfile = 'C:\Db_Listini_Ricambi\FormatFile\temp_FormatFile.fmt', ERRORFILE = 'C:\error.log');
GO
SELECT * FROM Listini_versione_import;
GO

Codice:
(0 row(s) affected)
Msg 4861, Level 16, State 1, Line 1
Cannot bulk load because the file "c:\error.log" could not be opened. Operating system error code 5(Accesso negato.).
Msg 4861, Level 16, State 1, Line 1
Cannot bulk load because the file "c:\error.log.Error.Txt" could not be opened. Operating system error code 5(Accesso negato.).

(0 row(s) affected)

- - - Updated - - -

Devi indicare l'intero percorso

ok ho ancora una modifica:

Codice:
...
   with ( formatfile = 'C:\Db_Listini_Ricambi\FormatFile\temp_FormatFile.fmt', ERRORFILE = 'C:\Db_Listini_Ricambi\error.log.txt');
...

e mi si ripresenta questo errore:

Codice:
(0 row(s) affected)
[COLOR=#ff0000]Msg 4862, Level 16, State 1, Line 1
Cannot bulk load because the file "C:\Db_Listini_Ricambi\FormatFile\temp_FormatFile.fmt" could not be read. Operating system error code (null).
[/COLOR]
(0 row(s) affected)

quindi a questo punto credo si sia rovinato il file di formato.. oppure non saprei!

Cavolo dovrebbe essere una cosa semplicissima importare un txt in un database..
 
Devi indicare l'intero percorso


USE Listini_Ricambi;
GO
DELETE dbo.Listini_versione_import;
GO
BULK INSERT dbo.Listini_versione_import
from 'C:\Db_Listini_Ricambi\Listino\T_Listini_versione.txt.001.txt'
with (formatfile = 'C:\Db_Listini_Ricambi\FormatFile\temp_FormatFile.fmt', ERRORFILE = 'C:\error.log');
GO
SELECT * FROM Listini_versione_import;
GO


Nel file error.log.txt.Error.txt c'è scritto " Row 1 File Offset 0 ErrorFile Offset 0 - HRESULT 0x80004005"
 
Nel file error.log.txt.Error.txt c'è scritto " Row 1 File Offset 0 ErrorFile Offset 0 - HRESULT 0x80004005"
Si ferma subito, non analizza nemmeno il primo carattere.
O è un problema del FileFormat oppure è un problema del file che importi.
Prova a creare un file da 0 e metterci dentro (senza fare copia e incolla) un paio di righe del file originale.
 
Ma come è formattato il file? Le righe differiscono una dall'altra. Esattamente come è strutturato?
 
Ma come è formattato il file? Le righe differiscono una dall'altra. Esattamente come è strutturato?

Ciao Tinwor,

il file ha una struttura a larghezza fissa ed è composto da 14 colonne con un formato descritto nei precedenti messaggi.

Domani proverò ad allegare un pezzo di file 2-3Mb così magari mi date una mano ..perchè non credo debba essere un'odissea importare un file in SQL...giusto? e io purtroppo proprio non ci sto riuscendo...


intanto vi ringrazio e vado a letto.:thanks:
 
Direi di no, con uno stream leggi riga per riga, gestisci il file è carichi su db (questo è quello che farei io, così posso controllare anche se vi sono dati non corretti)
 
Direi di no, con uno stream leggi riga per riga, gestisci il file è carichi su db (questo è quello che farei io, così posso controllare anche se vi sono dati non corretti)

Buongiorno,

Saresti disposto a darmi qualche info in merito.. ?!

Coma accennato ieri sera allego il MioFile.txt ( da 2Mb) e il FormatFile.fmt ricavato importando il file con l'utility " Import and Export data" e poi tramite "bcp.exe" ho creato il file .fmt .


Visualizza allegato MioFile_2Mb.txt - Visualizza allegato FormatFile.fmt.txt


Dai che oggi è la volta buona. :help:
 
Buongiorno,

Saresti disposto a darmi qualche info in merito.. ?!

Coma accennato ieri sera allego il MioFile.txt ( da 2Mb) e il FormatFile.fmt ricavato importando il file con l'utility " Import and Export data" e poi tramite "bcp.exe" ho creato il file .fmt .


Visualizza allegato 198269 - Visualizza allegato 198270


Dai che oggi è la volta buona. :help:
[TABLE="width: 500"]
[TR]
[TD]col1[/TD]
[TD]col2[/TD]
[TD]col3[/TD]
[TD]col4[/TD]
[TD]col5[/TD]
[TD]col6[/TD]
[TD]col7[/TD]
[TD]col8[/TD]
[TD]col9[/TD]
[TD]col10[/TD]
[TD]col11[/TD]
[TD]col12[/TD]
[TD]col13[/TD]
[TD]col14[/TD]
[/TR]
[TR]
[TD]001 [/TD]
[TD]013 [/TD]
[TD]001 [/TD]
[TD]112183380 (spazi vuoti) [/TD]
[TD]5983 [/TD]
[TD]S[/TD]
[TD]S000 [/TD]
[TD](30 vuoti)[/TD]
[TD](40 vuoti)[/TD]
[TD](100 vuoti) [/TD]
[TD]000000007240 [/TD]
[TD](1 vuoti)[/TD]
[TD]0069 [/TD]
[TD]0 mancano 2 caratteri[/TD]
[/TR]
[/TABLE]

Seguendo il tuo fileFormat, ed estrapolando i dati, la prima riga termina prima del dovuto modifica il fileFormat e imposta così l'ultima riga.

14 SQLCHAR 0 1 "\r\n" 14 Tappo Latin1_General_CI_AS

Vediamo se almeno andiamo avanti
 
Ultima modifica:
Pubblicità
Pubblicità
Indietro
Top