sql >> データベース >  >> RDS >> Sqlserver

CSVファイルをSQLサーバーにアップロードする

    まず、プログラミングは必要ありません。 SQL管理ツールを使用して、CSVファイルをSQLデータベースに直接アップロードできます。ただし、本当にプログラミングでそれを行う必要がある場合は、以下をお読みください。

    個人的には、このアプローチはプログラミングを通じて行う最も効率的で簡単な方法だと思います。

    一般的に、2つのステップでそれを達成できます

    1位 手順は、CSVファイルを読み取り、レコードをDataTableとして保持することです。 。
    2番目 ステップは、取得したDataTableを保存することです バルクエントリとしてSQLデータベーステーブルに

    これは、CSVファイルデータをDataTableとして返す関数です。 。呼び出してメモリに保存すると、好きなことを行うことができます。

    この関数は、CSV読み取りファイルを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-この関数を使用して、取得したDataTableを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);
             }
         }
    

    ソース



    1. SQLでのトランザクションを理解する

    2. 一度に複数のデータベースを照会する

    3. MySQL REPLACE()–サブストリングのすべてのインスタンスを別のストリングに置き換えます

    4. mysqlselectqueryで2つの日付の間の日付のリストを取得する方法