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

Informaticalecce

Nuovo Utente
24
1
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
 

TheJudge

Utente Attivo
335
84
CPU
i5-8600k
Dissipatore
Cooler Master TX3 EVO
Scheda Madre
MSI Z370 SLI PLUS
HDD
SAMSUNG 840 Pro 250GB + SSD Sandisk 250GB
RAM
Hiperx 2x8GB DDR4 @2666Hz
GPU
Asus Strix 1070TI
Monitor
1 Asus 24" fullHD + BENQ 27" fullHD
PSU
EVGA SuperNova 850W 80+ gold
Case
NZXT S340
OS
Windows 10 Pro
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
 

Informaticalecce

Nuovo Utente
24
1
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)
 

TheJudge

Utente Attivo
335
84
CPU
i5-8600k
Dissipatore
Cooler Master TX3 EVO
Scheda Madre
MSI Z370 SLI PLUS
HDD
SAMSUNG 840 Pro 250GB + SSD Sandisk 250GB
RAM
Hiperx 2x8GB DDR4 @2666Hz
GPU
Asus Strix 1070TI
Monitor
1 Asus 24" fullHD + BENQ 27" fullHD
PSU
EVGA SuperNova 850W 80+ gold
Case
NZXT S340
OS
Windows 10 Pro
: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
 

Informaticalecce

Nuovo Utente
24
1
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..
 

TheJudge

Utente Attivo
335
84
CPU
i5-8600k
Dissipatore
Cooler Master TX3 EVO
Scheda Madre
MSI Z370 SLI PLUS
HDD
SAMSUNG 840 Pro 250GB + SSD Sandisk 250GB
RAM
Hiperx 2x8GB DDR4 @2666Hz
GPU
Asus Strix 1070TI
Monitor
1 Asus 24" fullHD + BENQ 27" fullHD
PSU
EVGA SuperNova 850W 80+ gold
Case
NZXT S340
OS
Windows 10 Pro
Prova a dare alla cartella C:\Db_Listini_Ricambi i permessi per l'utente sql
 

Informaticalecce

Nuovo Utente
24
1
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"
 

TheJudge

Utente Attivo
335
84
CPU
i5-8600k
Dissipatore
Cooler Master TX3 EVO
Scheda Madre
MSI Z370 SLI PLUS
HDD
SAMSUNG 840 Pro 250GB + SSD Sandisk 250GB
RAM
Hiperx 2x8GB DDR4 @2666Hz
GPU
Asus Strix 1070TI
Monitor
1 Asus 24" fullHD + BENQ 27" fullHD
PSU
EVGA SuperNova 850W 80+ gold
Case
NZXT S340
OS
Windows 10 Pro
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.
 

TheJudge

Utente Attivo
335
84
CPU
i5-8600k
Dissipatore
Cooler Master TX3 EVO
Scheda Madre
MSI Z370 SLI PLUS
HDD
SAMSUNG 840 Pro 250GB + SSD Sandisk 250GB
RAM
Hiperx 2x8GB DDR4 @2666Hz
GPU
Asus Strix 1070TI
Monitor
1 Asus 24" fullHD + BENQ 27" fullHD
PSU
EVGA SuperNova 850W 80+ gold
Case
NZXT S340
OS
Windows 10 Pro
Cioè, come si fa? Sono unico utente amministratore del PC. ho controllato i permessi nelle proprietà della cartella e sono ok!
Questo passaggio serviva se non ti creava il file log. Ma dato che l'ha creato non serve più
 

Tinwor

Utente Attivo
932
143
Ma come è formattato il file? Le righe differiscono una dall'altra. Esattamente come è strutturato?
 

Informaticalecce

Nuovo Utente
24
1
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:
 

Tinwor

Utente Attivo
932
143
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)
 

Informaticalecce

Nuovo Utente
24
1
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:
 

TheJudge

Utente Attivo
335
84
CPU
i5-8600k
Dissipatore
Cooler Master TX3 EVO
Scheda Madre
MSI Z370 SLI PLUS
HDD
SAMSUNG 840 Pro 250GB + SSD Sandisk 250GB
RAM
Hiperx 2x8GB DDR4 @2666Hz
GPU
Asus Strix 1070TI
Monitor
1 Asus 24" fullHD + BENQ 27" fullHD
PSU
EVGA SuperNova 850W 80+ gold
Case
NZXT S340
OS
Windows 10 Pro
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:
col1col2col3col4col5col6col7col8col9col10col11col12col13col14
001 013 001 112183380 (spazi vuoti) 5983 SS000 (30 vuoti)(40 vuoti)(100 vuoti) 000000007240 (1 vuoti)0069 0 mancano 2 caratteri

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:

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!