AWS DynamoDBが現在 本番DBとして稼働している
上記DBのレコードを出力して次期システムのDBにデータをロードしたい
nugetから AWSSDK.DynamoDBv2 を インストールします
サンプルソースを実行したが
AWSに接続するにはアクセスキーIDとシークレットキーが必要
基本的なことを知らなくて、接続出来なくて右往左往しました。
実行エラーを Copilot君に読ませたら、教えてくれました
アクセスキーIDとシークレットキーを設定するソース
using Amazon;
using Amazon.DynamoDBv2;
using Amazon.DynamoDBv2.DataModel;
using System.Threading.Tasks;
//using AWStoSQL.Models; テーブルをクラス化
using System.Text;
using System.IO;
using System.Reflection;
//アクセスキーIDとシークレットキーをセット
string accessKeyId = "あくせすきー";
string secretAccessKey = "しーくれっときー";
// DynamoDBクライアントを初期化
var config = new AmazonDynamoDBConfig
{
RegionEndpoint = Amazon.RegionEndpoint.APNortheast1 // 例: us-east-1
};
var client = new AmazonDynamoDBClient(accessKeyId, secretAccessKey, config);
// DynamoDBから全件取得
var context = new DynamoDBContext(client);
var items = await context.ScanAsync<テーブルクラス>(new List<ScanCondition>()).GetRemainingAsync();
// CSV出力処理
var csvPath = "d:\\temp\\output.csv";
var properties = typeof(テーブルクラス).GetProperties(BindingFlags.Public | BindingFlags.Instance);
// ヘッダー作成
var sb = new StringBuilder();
sb.AppendLine(string.Join(",", properties.Select(p => p.Name)));
// データ行作成
foreach (var item in items)
{
var values = properties.Select(p => {
var value = p.GetValue(item, null);
return value != null ? value.ToString().Replace(",", " ") : "";
});
sb.AppendLine(string.Join(",", values));
}
// ファイル書き込み
File.WriteAllText(csvPath, sb.ToString(), Encoding.UTF8);
Console.WriteLine($"CSVファイルを出力しました: {csvPath}");
ここからテーブルクラス
using Amazon;
using Amazon.DynamoDBv2;
using Amazon.DynamoDBv2.DataModel;
using System.Threading.Tasks;
namespace AWStoSQL.Models;
[DynamoDBTable("AWSのテーブル名")]
internal class Z_Committee
{
[DynamoDBHashKey("id")]
public double id { get; set; }
[DynamoDBRangeKey("bookId")]
public string bookId { get; set; }
public int user_Id { get; set; }
public string title { get; set; }
public string? created_at { get; set; }
public string? updated_at { get; set; }
}