Bulk insert Csv

di il
15 risposte

Bulk insert Csv

Uso sql server 2014 e non sono esperto quindi vi chiedo un po' di pazienza
Uso molto la funzione bulk insert per importare dei file csv, ma non ho mai messo opzioni particolari quindi per fare un esempio 
BULK insert Tabella from 'percorsoFile\file.csv'
With (FIELDTERMINATOR = ';')

Mi sono accorto però che alcuni caratteri vengono importati male

Se per esempio nel file csv c'è scritto
ciao "ragazzi" 
Viene importato "ciao ""ragazzi"

Oppure se ci sono 6 puntini 
...... 
Viene importato àà

Vi chiedo se c'è un modo per risolvere questi problemi spiegato nella maniera più semplice possibile per favore
Grazie a tutti

15 Risposte

  • Re: Bulk insert Csv

    Ciao ancora 

    Scusate, non vorrei essere insistente, ma nessuno sa aiutarmi? 

    Ho appena scoperto che per le stesse ragioni la à viene cambiata con la o accentata maiuscola (non so neanche scriverla) 

  • Re: Bulk insert Csv

    05/04/2023 - xyz.net ha scritto:


    Se per esempio nel file csv c'è scritto
    ciao "ragazzi" 
    […]
    Oppure se ci sono 6 puntini 
    ...... 
    […]

    Potrebbe trattarsi di un problema di encoding, oppure ancora a una malformazione del file CSV.

    Riportane un esempio che includa il record intero che contiene i suddetti valori, oppure carica il file da qualche parte per poter dare un'occhiata al suo contenuto (magari togliendo dati sensibili, se presenti).

  • Re: Bulk insert Csv

    Grazie per la risposta @Alka

    Se salvo un file in questo modo:
    CSV (delimitato dal separatore di elenco) (*. Csv)

    Con due record così compilati

    ciao "ragazzi" 
    ......

    E uso l'istruzione

    Create Tablet prova
    (
    Prova nvarchar(254)
    )

    Bulk insert prova FROM 'c:\users\path... \prova.csv'  WITH ( FIELDTERMINATOR = ';')

    select * from prova

    Esce

    "ciao ""ragazzi""
    àà

    C'è modo di caricare qui il file. Csv? 

    Altrimenti dove? 

    Non lo trovo grazie

  • Re: Bulk insert Csv

    19/04/2023 - xyz.net ha scritto:


    C'è modo di caricare qui il file. Csv? 

    Qui non credo, ma basta anche riportarne uno stralcio significativo, oppure memorizzarlo in uno storage condivisibile qualsiasi.

  • Re: Bulk insert Csv

    Ed ecco il link per il file 

    Grazie @Alka 

    https://www.mediafire.com/file/m1cmxzupjulg3jy/prova_095041.csv/file

  • Re: Bulk insert Csv

    27/04/2023 - xyz.net ha scritto:


    Ed ecco il link per il file 

    Scusa, ma il contenuto del file è quello che riporto qui di seguito:

    "ciao ""ragazzi"""
    ……
    ù

    Ti sembra un file in formato CSV?
    Guarda gli esempi che sono descritti in questo articolo e dimmi se il tuo file assomiglia lontanamente a uno di questi. :)

    Un piccolo indizio: nel tuo file “comma separated” non c'è nemmeno una “comma”… :)

  • Re: Bulk insert Csv

    Eh, ma quello è proprio uno dei problemi 

    Spiegandomi meglio col primo esempio io in Excel ho scritto :

    ciao “ragazzi” 

    e salvando in formato csv viene poi come lo vedi tu 

    forse sbaglio approccio e non devo usare il csv? 

    Io ho bisogno di importare dei dati in sql con bulk insert, e sto cercando la soluzione migliore 

  • Re: Bulk insert Csv

    28/04/2023 - xyz.net ha scritto:


    Eh, ma quello è proprio uno dei problemi 

    Quello quale? Il problema che vedo qui è che questo file non appartiene a nessun formato globalmente riconosciuto: è un file di testo con tre righe senza senso apparente.

    28/04/2023 - xyz.net ha scritto:


    e salvando in formato csv viene poi come lo vedi tu 

    Infatti, la prima riga forse è l'unica significativa, che contiene la stringa esportata mettendola tra virgolette e raddoppiandole nel punto in cui è necessario rappresentarle nel testo.

    28/04/2023 - xyz.net ha scritto:


    Io ho bisogno di importare dei dati in sql con bulk insert, e sto cercando la soluzione migliore 

    Mi sembra una domanda scontata, ma a questo punto non si sa mai: hai dato un'occhiata alla documentazione della BULK INSERT?
    Ad esempio, si parla di un parametro FIELDQUOTE che si direbbe abbia a che fare proprio con la gestione delle “virgolette” nel campo per racchiudere i valori.

  • Re: Bulk insert Csv

    Grazie @Alka 

    Come avrai capito non sono molto esperto e ti chiedo un po' di pazienza 

    Proviamo così: supponi di avere un foglio Excel così compilato nella colonna A

    Riga 1 : ciao “ragazzi” 

    Riga 2 : ù

    Riga 3 :  …… 

    Come lo salveresti per ottenere un csv corretto? 

     
  • Re: Bulk insert Csv

    29/04/2023 - xyz.net ha scritto:


    Proviamo così: supponi di avere un foglio Excel così compilato nella colonna A

    Riga 1 : ciao “ragazzi” 

    Riga 2 : ù

    Riga 3 :  …… 

    Come lo salveresti per ottenere un csv corretto? 

    Lo salverei come CSV partendo da Excel.
    Se i dati sono quelli, è normale che ottieni un file simile a quello che hai allegato.

    Se importando il file ti trovi i separatori di campi o di valori all'interno dei record importati, devi istruire la BULK INSERT affinché legga correttamente il valore del campo, usando l'opzione FIELDQUOTE ad esempio, così come indicato nella documentazione.

  • Re: Bulk insert Csv

    E come scriveresti la bulk insert? 

    30/04/2023 - Alka ha scritto


    Istruire la BULK INSERT affinché legga correttamente il valore del campo, usando l'opzione FIELDQUOTE ad esempio, così come indicato nella documentazione.

  • Re: Bulk insert Csv

    30/04/2023 - xyz.net ha scritto:


    E come scriveresti la bulk insert? 

    Ma perché non leggi la documentazione e fai una prova?
    Dobbiamo proprio fare il lavoro al posto tuo…

    Hai provato così?

    BULK INSERT NomeTabella
    FROM 'PercorsoFile.csv'
    WITH (
      FORMAT = 'CSV',
      FIELDTERMINATOR = ';',
      FIELDQUOTE = '"'
    )
  • Re: Bulk insert Csv

    In realtà questo l'ho già provato, ma sia

    Format = ‘CSV’  che FIELDQUOTE = ‘ " ’ 

    Creano un errore (Sintassi non corretta in prossimità di… ) 

    Mi viene il dubbio a questo punto che si tratti della versione di Sql un po' datata. Uso la 2014, potrebbe dipendere da questo? 

    Grazie

  • Re: Bulk insert Csv

    02/05/2023 - xyz.net ha scritto:


    In realtà questo l'ho già provato, ma sia

    Format = ‘CSV’  che FIELDQUOTE = ‘ " ’ 

    Creano un errore (Sintassi non corretta in prossimità di… ) 

    Spero che tu non vada a indicare gli apici nel modo in cui hai scritto nel messaggio.
    Quando riporti il codice, deve essere formattato.

    Inoltre, creano un errore “Sintassi non corretta in prossimità di…”: perché non incolli tutto l'errore?
    Perché non scrivi l'istruzione precisa che hai indicato? E anche formattandola?

    02/05/2023 - xyz.net ha scritto:


    Mi viene il dubbio a questo punto che si tratti della versione di Sql un po' datata. Uso la 2014, potrebbe dipendere da questo? 

    E' datata, ma queste feature dovrebbero essere disponibili.
    Però qui le informazioni arrivano sempre con il contagocce, quindi… chi lo sa qual è l'origine del problema a questo punto?

Devi accedere o registrarti per scrivere nel forum
15 risposte