Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Télécharger le fichier CSV sur le serveur SQL

Tout d'abord, vous n'avez pas besoin de matériel de programmation. Vous pouvez télécharger directement des fichiers CSV dans la base de données SQL avec des outils de gestion SQL. Cependant, si vous avez vraiment besoin de le faire via la programmation, lisez simplement ci-dessous.

Personnellement, je pense que cette approche est la manière la plus efficace et la plus simple de procéder par programmation.

En général, vous pouvez y parvenir en deux étapes

1er l'étape consiste à lire le fichier CSV et à conserver les enregistrements sous forme de DataTable .
2ème l'étape est de stocker le DataTable récupéré dans la table de base de données SQL en tant qu'entrée en masse

Il s'agit d'une fonction qui renvoie les données du fichier CSV sous la forme d'un DataTable . Appelez et gardez-le dans la mémoire et vous pouvez en faire ce que vous voulez.

Cette fonction va renvoyer le fichier CSV Read dans DataTable.

private static DataTable GetDataTabletFromCSVFile(string csv_file_path)
    {
        DataTable csvData = new DataTable();
        try
        {
          using(TextFieldParser csvReader = new TextFieldParser(csv_file_path))
             {
                csvReader.SetDelimiters(new string[] { "," });
                csvReader.HasFieldsEnclosedInQuotes = true;
                string[] colFields = csvReader.ReadFields();
                foreach (string column in colFields)
                {
                    DataColumn datecolumn = new DataColumn(column);
                    datecolumn.AllowDBNull = true;
                    csvData.Columns.Add(datecolumn);
                }
                while (!csvReader.EndOfData)
                {
                    string[] fieldData = csvReader.ReadFields();
                    //Making empty value as null
                    for (int i = 0; i < fieldData.Length; i++)
                    {
                        if (fieldData[i] == "")
                        {
                            fieldData[i] = null;
                        }
                    }
                    csvData.Rows.Add(fieldData);
                }
            }
        }
        catch (Exception ex)
        {
           return null;
        }
        return csvData;
    }
  }

SQLBulkCopy - Utilisez cette fonction pour insérer le DataTable récupéré dans le tableau Sql

static void InsertDataIntoSQLServerUsingSQLBulkCopy(DataTable csvFileData)
{
    using(SqlConnection dbConnection = new SqlConnection("Data Source=ProductHost;Initial Catalog=yourDB;Integrated Security=SSPI;"))
    {
         dbConnection.Open();
         using (SqlBulkCopy s = new SqlBulkCopy(dbConnection))
         {
             s.DestinationTableName = "Your table name";
             foreach (var column in csvFileData.Columns)
                 s.ColumnMappings.Add(column.ToString(), column.ToString());
             s.WriteToServer(csvFileData);
         }
     }

Source