从csv导入长号进入访问

时间:2015-06-05 12:02:26

标签: c# csv ms-access

我想导入csv文件来访问数据库,大多数数据都是“长”的。数。 问题是那些“漫长的'数字转换为科学记数法。 在csv中说是90049699515564500,导入到访问后是9.00496995155646E + 16

访问数据库table1我确实设置了所有列日期类型:文本,字段大小:255

这是csv
可乐,COLB,COLC
123123,123123,123123
90049699515564500 下,123123,123123

这是导入后的访问表1结果 可乐,COLB,COLC
123123,123123,123123
9.00496995155646E + 16 下,123123,123123

这是C#代码

string strQryCommand = "INSERT INTO table1 "
                     +  "SELECT colA, colB, colC "
                     + @"FROM [Text;FMT=Delimited;HDR=YES;Database=C:\someDir].[file.csv]";

using (OleDbConnection conn = new OleDbConnection(ConfigurationManager.ConnectionStrings["AccessDatabase"].ConnectionString))
{
    using (OleDbCommand cmd = new OleDbCommand())
    {
        cmd.Connection = conn;
        cmd.CommandText = strQryCommand;
        conn.Open();
        cmd.ExecuteNonQuery();
        conn.Close();
    }
}

任何想法我怎样才能保存“长”字样?数字为字符串/文字?

4 个答案:

答案 0 :(得分:3)

尝试使用CDec:

string strQryCommand = "INSERT INTO table1 "
                     +  "SELECT CDec(colA), colB, colC "
                     + @"FROM [Text;FMT=Delimited;HDR=YES;Database=C:\someDir].[file.csv]";

或在读取数据时使用CDec转换数据。

答案 1 :(得分:1)

强制转换格式:

SELECT Format(colA,\"0000000000000000\") as colA, colB, colC­­­­

答案 2 :(得分:0)

在设计视图中打开表格。选择该字段并将格式设置为标准。无需额外操作数据。 enter image description here

答案 3 :(得分:0)

确定。我尝试了这里建议的所有方法。但没有人真正解决我的问题,使用Ole DB查询导入csv数字更多16位数。这是两种替代解决方案,

  1. 在流程前按csv,在这些数字上添加引号:“12345678901234567”。
  2. 使用流式阅读器而不是使用Ole DB查询。