C# .NET6 macOS MySQLデータ取得 / カラム名一覧取得

C# .NET6 macOS MySQLデータ取得 / カラム名一覧取得

C# .NET6MySQL接続するためmacOSのターミナルから[パッケージを組込む]ための「add package」コマンドを実行します。

dotnet add package MySql.Data --version 8.0.28

MySQLで下のtestという名称のテーブルを用意しました。

testテーブル

このtestテーブル内容をC# .NET6から取得する2つのコード例です。

MySqlCommandのExecuteReader()を使う場合

using MySql.Data.MySqlClient;
using System.Data;
string mysqlConnectStr = string.Format("Server={0};Database={1};Uid={2};Pwd={3};Charset={4}", "127.0.0.1", "x", "x", "x", "utf8");

var mysqlConnect = new MySqlConnection(mysqlConnectStr);
mysqlConnect.Open();
var myCommand = new MySqlCommand("select * from test", mysqlConnect);

var read = myCommand.ExecuteReader();
while(read.Read()){
    Console.WriteLine("{0}, {1}", read["title"],read[1]);
}
mysqlConnect.Close();

カラム名でもカラムインデックスでも取得可能でした。

MySqlDataAdapterを使う場合

using MySql.Data.MySqlClient;
using System.Data;
string mysqlConnectStr = string.Format("Server={0};Database={1};Uid={2};Pwd={3};Charset={4}", "127.0.0.1", "x", "x", "x", "utf8");

var mysqlConnect = new MySqlConnection(mysqlConnectStr);
mysqlConnect.Open();
var myCommand = new MySqlCommand("select * from test", mysqlConnect);

var rows = new MySqlDataAdapter(myCommand);
var dt = new DataTable();
rows.Fill(dt);

foreach(DataRow line in dt.Rows){
    foreach(var col in dt.Columns){
        Console.WriteLine("Column Name = {0}, Value = {1}", col, line[col.ToString()]);
    }
}
mysqlConnect.Close();

DataTableを使ってColumn名を取り出しています。

DynamoDBのテーブル定義を取得して別リージョンにコピーを作成する

DynamoDBのテーブル定義を取得して別リージョンにコピーを作成する

AWS DynamoDBでシステムを組むとテーブルは当然1つ2つでは済まず、システムとしてたくさんのテーブルを作ることになります。システムをテスト用や本番環境などで別リージョンにコピーを作らないといけないこともあり、ボタンひとつで簡単にコピーできればいいのですがそういったツールもなく手作業になっています。AWSCLIコマンドを組み合わせればある程度テーブル定義の取得から別リージョンに新たにテーブル作成することができます。

テーブル一覧を取得

aws dynamodb list-tables

テーブル定義を取得

aws dynamodb describe-table --table-name テーブル名 > 出力ファイル名.json

テーブルリストが取得できるので上記のdescribe-tableで定義を取得しJSONファイルを保存します。このdescribe-table情報はテーブル作成で要らない情報も入っていますのでそれを編集します。下記のElementを削除します。

['TableStatus', 'TableSizeBytes','TableId','TableArn', 'ItemCount','CreationDateTime', 'NumberOfDecreasesToday','IndexStatus','IndexSizeBytes','IndexArn']

テーブル作成

describe-tableのJSONが綺麗に修正できたらcreate-tableを実行します。

aws dynamodb create-table --table-name テーブル名 --cli-input-json file://テーブル定義.json

この手順で別リージョンにコピーできるのですがdescribe-tableの編集が面倒です。なのでわたしの場合Node.jsで組んで簡単に引越しできるようにしました。

https://github.com/mojeld/copyDynamoDBTabledefinitionToAnotherRegion

node index.js ap-northeast-1 us-west-2

上記のようにソースリージョンとコピー先リージョンを指定するとコピーできます。

2022 MJELD TECHNOLOGIES. ALL RIGHTS RESERVED