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

postgresqlテーブルへのバルクC#データテーブル

    PostgreSQLには間違いなくバルクコピーがあります(実際にはcopyと呼ばれます) )、そしてそれは.NETのための素晴らしいラッパーを持っています。ロードする場合は、NpgsqlCopyInを使用します 、データを抽出する場合は、NpgsqlCopyOut.を使用できます。

    あなたの質問は詳細について少し曖昧です-私はあなたのデータテーブルのフィールドや実際のデータベースについて何も知らないので、C#/PostgreSQLを使用してテーブルにデータを一括挿入する方法の簡単な例としてこれを取り上げてください:

        NpgsqlCopyIn copy = new NpgsqlCopyIn("copy table1 from STDIN WITH NULL AS '' CSV;",
            conn);
        copy.Start();
    
        NpgsqlCopySerializer cs = new NpgsqlCopySerializer(conn);
        cs.Delimiter = ",";
    
        foreach (var record in RecordList)
        {
            cs.AddString(record.UserId);
            cs.AddInt32(record.Age);
            cs.AddDateTime(record.HireDate);
            cs.EndRow();
        }
    
        cs.Close();
        copy.End();
    

    -2019年8月27日編集-

    Npgsqlの構成が完全に変更されました。以下は、バイナリインポートを使用した上記と同じ例の定型文です(テキストも利用可能です):

    using (var writer = conn.BeginBinaryImport(
        "copy user_data.part_list from STDIN (FORMAT BINARY)"))
    {
        foreach (var record in RecordList)
        {
            writer.StartRow();
            writer.Write(record.UserId);
            writer.Write(record.Age, NpgsqlTypes.NpgsqlDbType.Integer);
            writer.Write(record.HireDate, NpgsqlTypes.NpgsqlDbType.Date);
        }
    
        writer.Complete();
    }
    


    1. 条件が一意である場合のMySQLの個別カウント

    2. SQL Server のテーブルの列へのカンマ区切り文字列

    3. 同じキーを持つアイテムがすでに追加されていますデータセットを設定しようとするとSSRSでエラーが発生します

    4. PythonでMySQLdbモジュールをインポートできません