Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将长编号从csv导入access_C#_Csv_Ms Access - Fatal编程技术网

C# 将长编号从csv导入access

C# 将长编号从csv导入access,c#,csv,ms-access,C#,Csv,Ms Access,我想导入csv文件以访问数据库,大部分数据是一个“长”数字。 问题是那些“长”数字转换成了科学符号。 在csv中表示为90049699515564500,导入access后表示为9.00496995155646E+16 access数据库表1我设置了所有列的日期类型:Text,字段大小:255 这是csv 可乐,可乐,可乐 123123,123123,123123 90049699515564500123123 以下是导入后的access table1结果 可乐,可乐,可乐 123123,123

我想导入csv文件以访问数据库,大部分数据是一个“长”数字。 问题是那些“长”数字转换成了科学符号。 在csv中表示为90049699515564500,导入access后表示为9.00496995155646E+16

access数据库表1我设置了所有列的日期类型:Text,字段大小:255

这是csv 可乐,可乐,可乐 123123,123123,123123 90049699515564500123123

以下是导入后的access table1结果 可乐,可乐,可乐 123123,123123,123123 9.00496995155646E+16123123

这是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();
    }
}
知道如何将“long”数字保存为字符串/文本吗?

试试CDec:

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

或者在读取数据时使用CDec转换导入后的数据。

强制转换格式:

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

在“设计”视图中打开该表。选择该字段并将格式设置为“标准”。不需要对数据进行额外的操作。
好的。我尝试了这里建议的所有方法。但没有人真正解决我的问题,使用OLEDB查询导入超过16位的csv数字。有两种备选方案

在处理之前对csv进行按摩,在数字编号上添加引号:12345678901234567。 使用流读取器而不是使用Ole DB查询。
这给了我一个错误:查询表达式CDecColA中的函数使用了错误数量的参数。只有一个参数,但ColA中可能有空值?试用CDecNzColA,0。试用CDecNzColA,0错误:表达式中未定义函数“Nz”。请尝试cdecifisnullcola,0,ColA,0错误:溢出。然后我更喜欢:选择IIfcolA为Null,Null,CDeccolA,colB,colC或者:选择CDec'0'&ColA,colB,colC.M访问?我看不到“标准”的格式。尝试使用formatColA,查询字符串中的标准格式,但失败。什么查询字符串?从Access中打开设计视图中的表。在窗口下部的“字段属性”下的“常规”选项卡上,有一个“格式”属性。在空白处单击,将出现一个下拉按钮。打开它并选择“标准”。谢谢。我认为这是最适合我的解决方案。我使用而不是0。选择FormatcolA,\\as colA,colB,colC­­我使用SELECT FormatcolA,\\as colA,colB,colC。但是,另一个问题来了,当数字太长时,数字是错误的,转换是错误的。csv:8610592400381810,访问权限:8610592400381820。csv:90049699515564500,访问权限:90049699515564600