我编写了一个程序,使用OleDB
查询来填充DataTable
,然后使用BulkLoader
将其加载到MySQL数据库中。我遇到的问题是将OleDB布尔类型列转换为MySQL中的等效列。我知道MySQL中没有BOOL
,所以我尝试使用TINYINT
但没有运气。我认为问题是我需要BulkLoader
TRUE
和FALSE
才需要1
或0
才能工作。
这是中间CSV文件中的列;
我认为这样做的一个简单方法就是简单地编写一个foreach
循环,然后生成每个TRUE = 1
和FALSE = 2
,就像这样;
foreach (DataRow column in dTable.Rows)
{
if (Convert.ToBoolean(column[16]) == true)
{
column[16] = 1;
}
else
{
column[16] = 0;
}
}
然而,这会以与上面显示的图像完全相同的输出结束,它仍会将所有内容解析为TRUE
和FALSE
,而不是1
或0
。我现在想,我可能必须将DataTable
列的类型从布尔值转换为整数但我不确定如何做到这一点,或者它是否是最简单的方法。
答案 0 :(得分:1)
一旦有数据,就无法更改列类型。但是,可以做这样的事情;
DataTable dtCloned = dt.Clone();
dtCloned.Columns["YouColumnName"].DataType = typeof(int);
foreach (DataRow row in dTable.Rows)
dtCloned.ImportRow(row);