ここでは、動的にテーブルを作成し始めるためにいくつかのコードです:
static string GetSqlType(Type dataTableColunmType)
{
//per type mappings here
//https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql-server-data-type-mappings
if (dataTableColunmType == typeof(string))
{
return "nvarchar(max)";
}
else if (dataTableColunmType == typeof(int))
{
return "int";
}
else if (dataTableColunmType == typeof(Single))
{
return "real";
}
else if (dataTableColunmType == typeof(double))
{
return "float";
}
else if (dataTableColunmType == typeof(DateTime))
{
return "datetime";
}
else if (dataTableColunmType == typeof(byte[]))
{
return "varbinary(max)";
}
else
{
throw new NotSupportedException($"Type {dataTableColunmType.Name} not supported");
}
}
static string GetCreateTableDDL(string tableName, DataTable table)
{
var ddl = new StringBuilder();
ddl.AppendLine($"create table [{tableName}] (");
foreach (DataColumn col in table.Columns)
{
ddl.Append($" [{col.ColumnName}] {GetSqlType(col.DataType)}, ");
}
ddl.Length = ddl.Length - ", ".Length;
ddl.Append(")");
return ddl.ToString();
}
は '' DataTable'または 'IDataReader'をtheTable'されますか? –
@ScottChamberlain System.Data.DataTable – dashnick
CSVには適切なデータ型、最大長、および適切な一致するリレーショナル表を作成するために必要なNULL可能性を持つスキーマがないため、データ表には一連の文字列またはオブジェクト列しかありません。 varchar(MAX)/ nvarchar(MAX)の列を使用して汎用テーブルを動的に作成することもできますが、より詳細な解決方法を提案できるように詳細を追加するとよいでしょう。 –