我从文本文件导入0000,0002,0023,0034等值。但是,该表将它们显示为0,2,23,34。有谁知道为什么它会删除前导零?
这是我的代码:
private DataTable ImportTabFile()
{
string dataSourcePath = @"C:\Documents and Settings\agordon\Desktop";
string dataFileName = "ACTIVITYEX.txt";
string connString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dataSourcePath + @";Extended Properties=""text;HDR=No;FMT=Delimited""";
OleDbConnection conn = new OleDbConnection(connString);
OleDbCommand cmd = conn.CreateCommand();
cmd.CommandText = String.Format("SELECT * FROM [{0}]", dataFileName);
DataSet ds = new DataSet();
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
da.Fill(ds);
return ds.Tables[0];
}
如何在导入过程中保留前导零?
这是我的架构文件的样子:
[ACTIVITYEX.txt]
Format=TabDelimited
ColNameHeader=False
Col13=ErrorCode Text
答案 0 :(得分:7)
JET将根据第一行推断类型。可能会推断您的字段为INT
,因为0000
可以转换为数字。如上所述,前导零是无用的。
您可以使用schema.ini
显式定义列类型。如上面的注释中所述,您需要根据文档指定每个列:
您必须按编号指定每列,并为固定长度文件指定列名,数据类型和宽度。
或者this article有一些关于控制如何推断类型的信息。