【问题标题】:CSV column data is being truncatedCSV 列数据被截断
【发布时间】:2011-07-30 08:52:36
【问题描述】:

我正在使用带有连接字符串的 Jet 解析 CSV 文件

@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + directory + ";Extended Properties='text;HDR=YES;FMT=Delimited';"

Schema.ini 包含:

[SelfCatering.csv]
Format=CSVDelimited
ColNameHeader=True
MaxScanRows=0

在我的 c# 代码中,我已将列数据类型预定义为字符串,但由于某种原因,扩展字符串列被截断为 255 个字符。如果我快速查看列数据本身,它是否只有 255 个字母长

它还会在哪里被截断?

谢谢

【问题讨论】:

    标签: c# parsing csv


    【解决方案1】:

    不要使用Jet OLEDB 4.0 驱动程序,它会将您的长文本截断为 255 个字符,并且它只会读取 255 个列/字段。如果您有超过 255 个列/字段,您将无法全部阅读。

    StackOverflow 上的其他人建议使用:A Fast CSV Reader

    【讨论】:

      【解决方案2】:

      你应该试试Datatype LongChar我成功了。

      【讨论】:

        【解决方案3】:

        不要指定 MaxScanRows=0。 由于某种原因它不起作用。 尝试 MaxScanRows=1000。这是工作。 或者尝试编辑注册表

        [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Access Connectivity Engine\Engines\Text] "MaxScanRows"=dword:00001000

        【讨论】:

          【解决方案4】:

          您是否尝试过在 Schema.ini 文件中指定字段类型:

          <SelfCatering.csv>
             You can add comments here
          </SelfCatering.csv>
          
          <schema.ini>
          [SelfCatering.csv]
          ColNameHeader=TRUE
          MaxScanRows=0
          Format=CSVDelimited
          Col1=ColName1 Text Width 50
          Col2=ColName2 Text Width 50
          Col3=ColName3 Text Width 500
          </schema.ini>
          

          【讨论】:

          • 其实我越想越觉得255是最大字段大小还是Jet引擎。您可以尝试将他的字段定义为备忘录而不是文本。但是你为什么不使用框架来读取 CSV 文件。
          猜你喜欢
          • 1970-01-01
          • 2013-04-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-12-20
          相关资源
          最近更新 更多