schema.ini 文件不适用于 MS Access

2024-05-12

我有一堆 csv 文件,我通过 VBA 将它们导入到 Access 中的表中。我在与导入的 csv 文件相同的目录中还有一个 schema.ini 文件。尽管在 ini 文件中字段被指定为双精度类型,但它们在 Access 中会转换为文本类型字段。每当顶部字段中有大量空值时,就会发生这种情况。如果前 10 个或 20 个字段中至少有一个非空值,则该字段将转换为数字类型。

经过一番研究后,我的评估是 schema.ini 文件没有执行任何操作,而 Access 正在确定字段的数据类型,因为我看到的行为正是 Access 的默认行为(如果 schema.ini 文件是不曾用过)。

所以这让我相信我的 schema.ini 文件有问题。

以下是我要导入的 5 个 csv 文件中的 3 个的 schema.ini 文件的示例:

[ForClsDatedModel_2015 0702_1004-1254.csv]
ColNameHeader=True
Format=CSVDelimited
"Ticker"=TEXT
"WT Def BSS MF-WT"=INTEGER
"Cyc BSS MF-WT"=DOUBLE
"WT Cyc BSS MF-WT"=INTEGER
"Gr BSS MF-WT"=DOUBLE
"WT Gr BSS MF-WT"=DOUBLE
"NT BSS MF-WT"=DOUBLE
"WT NT BSS MF-WT"=INTEGER
"WT BSS (All Ts)"=DOUBLE
"No Cust Ind BSS MF-WI"=DOUBLE
"WI No Cust Ind BSS MF-WI"=DOUBLE
"BSS MF-AE"=DOUBLE
"BSS MF-AE Score"=DOUBLE
"Cross BSS"=DOUBLE
"Cross BSS Score"=DOUBLE

...etc....

"Avg Qtrly NIM"=DOUBLE
"Avg Qtrly PROFITS TO TOTAL LOANS"=DOUBLE
"yoy -0 PROFITS TO LL RESERVE GROWTH"=DOUBLE
"yoy -1 PROFITS TO LL RESERVE GROWTH"=DOUBLE
"yoy -2 PROFITS TO LL RESERVE GROWTH"=DOUBLE
"yoy -3 PROFITS TO LL RESERVE GROWTH"=DOUBLE
"Ann PROFITS TO LL RESERVE GROWTH"=DOUBLE
"Avg Qtrly PROFITS TO LL RESERVE Gr"=DOUBLE
"PROFITS TO LL RESERVE Gr"=DOUBLE
"WT PROFITS TO LL RESERVE Gr"=INTEGER
"WI PROFITS TO LL RESERVE Gr"=INTEGER
"WG PROFITS TO LL RESERVE Gr"=INTEGER
"Rk PROFITS TO LL RESERVE Gr"=INTEGER
[ForClsDatedModel_2015 0702_1-250.csv]
ColNameHeader=True
Format=CSVDelimited
"Ticker"=TEXT
"Fundamental Ticker"=TEXT
"Name"=TEXT
"Custom Industry"=TEXT
"Crescat Industry"=TEXT
"GICS Sector"=TEXT
"GICS Industry Group"=TEXT
"GICS Industry"=TEXT
"GICS Sub-Industry"=TEXT
"Russell Sector"=TEXT
"Currency Being Used"=TEXT
"Report CCY"=TEXT
"Market Status"=TEXT
"IU"=INTEGER
"GM"=INTEGER
"L_fs_S"=DOUBLE
"Or"=INTEGER
"LC"=DOUBLE
"JM"=DOUBLE
"Side"=DOUBLE
"Holding"=DOUBLE
"Theme"=INTEGER

...etc....

"1M Proj Adj Return"=DOUBLE
"Rk 1M Proj Adj Return"=DOUBLE
"3M Proj Adj Return"=DOUBLE
"Rk 3M Proj Adj Return"=DOUBLE
"6M Proj Adj Return"=DOUBLE
"Rk 6M Proj Adj Return"=DOUBLE
"1Y Proj Adj Return"=INTEGER
"Rk 1Y Proj Adj Return"=DOUBLE
"non-neg PE4QT"=DOUBLE
"non-neg PE4QF"=DOUBLE
"non-neg PCFO4QT"=DOUBLE
[ForClsDatedModel_2015 0702_1255-1505.csv]
ColNameHeader=True
Format=CSVDelimited
"Ticker"=TEXT
"WI EP MF-WI"=INTEGER
"WI MF-WI (All Ts)"=INTEGER
"Beta (10 yr or 5 yr)"=DOUBLE
"Rk Beta (10 yr or 5 yr)"=DOUBLE
"Vol30"=DOUBLE
"Rk Vol30"=DOUBLE
"Vol90"=DOUBLE
"Rk Vol90"=DOUBLE

...etc...

schema.ini 文件有什么问题?谢谢!


本质上有两种方法可以预先设置文本文件(.txt、.csv、.tab)导入 Access 数据库的数据列,这两种方法都使用不同的 VBA 方法。

1. 规格对象(保存在数据库中)

在这里,你使用DoCmd.TransferText https://msdn.microsoft.com/en-us/library/office/ff835958.aspx其中参数之一是可选的规范名称(无扩展名或路径)。

DoCmd.TransferText(TransferType, SpecificationName, TableName, FileName, 
                    HasFieldNames, HTMLTableName, CodePage)

要创建此规范对象,您只需手动导入示例文本文件一次,完成向导,然后在最后一部分完成之前,单击“高级”按钮,该按钮总结了您刚刚指定的所有项目——字段名称、长度、数据类型等等。继续通过单击对话框窗口上的“另存为”来保存整个摘要文件,并记住您为其指定的名称,即上面的规范参数。

事实上,一旦保存规格,您就可以完全取消向导。导入/导出规范存储在可查询的 Access 系统表 MSysIMEXSpecs 中,并且可以在 .accdb 文件的生命周期内使用和重复使用甚至覆盖(再次通过向导)。事实上,您甚至可以导入到其他数据库(单击“外部数据”向导中的“高级”)。

2.Schema.ini文件(保存在数据库之外)

此处,文本文件表现为外部表,因为它包含可以链接到 Access 或通过记录集打开的架构,如上所述微软网站 https://support.microsoft.com/en-us/kb/149090。现在需要一种解决方法,因为此外部文件不会使用导入方法实现自动化。下面是链接表选项的修改,其中通过 Make-Table 查询创建本地表(包含所有架构、结构和数据)。之后,链接表被销毁(不是表本身,只是链接)。将此调整到您的应用程序中,可能在按钮 OnClick 或表单 OnOpen 事件中或通过 AutoExec 宏从 VBA 模块调用(当数据库首次打开时)。

Function LinkSchema() 
Dim db As DATABASE, tbl As TableDef 

Set db = CurrentDb() 
Set tbl = db.CreateTableDef("Linked Text")

tbl.Connect = "Text;DATABASE=c:\my documents;TABLE=csvFile_linked" 
tbl.SourceTableName = "csvFile.csv" 

db.TableDefs.Append tbl 
db.TableDefs.Refresh 

db.Execute "SELECT * INTO csvFile_local FROM csvFile_linked", dbFailOnError
db.TableDefs.Delete("csvFile_linked")

Set tbl = Nothing
Set db = Nothing

End Function

如上所述,我个人从不使用 schema.ini 文件,这甚至可能是一种过时的传统方法,因为 Microsoft 支持不是最新的。规格提供了流动的灵活性,因为它们与导入/导出程序集成在一起。另外,它们直接保存在数据库中,无需外部管理。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

schema.ini 文件不适用于 MS Access 的相关文章

  • VBA按空格分割字符串

    我想要一个 Excel 函数 我可以调用该函数并将单元格传递到其中 输入 Firstname Lastname email protected cdn cgi l email protection Firstname midname Las
  • 使用VBA删除Excel中的非重复数据

    我尝试删除非重复数据并保留重复数据 我已经完成了一些编码 但什么也没发生 哦 这是错误 哈哈 这是我的代码 Sub mukjizat2 Dim desc As String Dim sapnbr As Variant Dim shortDe
  • 将单元格背景颜色设置为其包含的 RGB 值。如何?

    下面是我希望通过手动复制和粘贴以外的方式实现的屏幕截图 这是材料设计调色板 在 Excel 中看起来很棒 如何循环遍历范围 B2 B15 并将每个单元格背景颜色设置为其相应的包含颜色 也许是一个VBA loop去经历垂直 B 单元格范围 解
  • 通过 VBA MS_Access 将 MS Access 表导出为 dBase 5

    如何通过 VBA 将单个表导出为 dBase 5 文件 目前我正在使用这个VBA代码 DoCmd TransferDatabase acExport dBase IV DB Total acTable DB Total C Data Fal
  • Excel宏-将逗号分隔的条目拆分为新行[重复]

    这个问题在这里已经有答案了 我目前在一张纸上有这些数据 Col A Col B Col C 1 A angry birds gaming 2 B nirvana rock band 我想要做的是将第三列中的逗号分隔条目拆分并插入新行 如下所
  • 无法验证模式并正确使用additionalProperties

    我正在尝试验证我的 JSON 架构并使用 extraProperties false 来确认没有其他属性 我的responseBody看起来像这样 id 1234567890987654 email email protected cdn
  • 如何通过VBA代码修复仅在Excel共享模式下发生的运行时错误400

    我真的不知道400错误是什么原因造成的 下面的代码在正常模式下运行得很好 但是一旦我在共享模式下启用 Excel 并尝试使用用户表单 它就会给我 VBA 400 我在这里尝试做的是在向用户显示用户表单后更改形状的文本并禁用其 OnActio
  • 我可以使用 VBA 将密码“传递”到 Excel 中的外部数据库连接吗?

    我正在尝试使用 VBA 隐藏我在 Excel 工作表中设置的数据连接的密码 由于 Excel 以纯文本形式存储外部数据源的密码 因此我想让 VBA 调用表的刷新并提供密码 我录制了刷新表格并输入密码的宏 但令我沮丧的是 它似乎省略了密码部分
  • 尝试使用变量作为自动过滤器中的条件,并带有“不等于”<>,但无法使其工作

    我正在使用 Excel VBA 使用 不等于 表达式来过滤列表 如果我使用Criteria1 lt gt Bob 代码运行完美 但如果我将 Bob 更改为变量 代码将无法运行 这有效 ActiveSheet ListObjects Rpt
  • Outlook 中用于删除重复电子邮件的宏 -

    Public Sub RemDups Dim t As Items i As Integer arr As Collection f As Folder parent As Folder target As Folder miLast As
  • 强制刷新工作表的“最后一个”单元格

    Pressing Ctrl End in Excel takes you to the bottom right most cell of the worksheet 如果删除最后的行或列并保存工作簿 最后一个单元格以及滚动条都会更新 我记
  • 如何VBA等待Windows保存对话框和发送密钥

    我正在创建一个宏文件 用于下载并保存从 SAP 旧版本 7 20 中提取的数据 当出现保存对话框时 未检测到 Windows 对话框 因为我的客户端 SAP 版本是旧版本 7 20 现在我对此的解决方案是发送密钥 但问题是某些数据包含大量数
  • 正在使用的 VBA 监视文件

    我正在寻找一些东西 Win API 调用或其他 来在文件可供编辑 即不再使用 时通知我 我应该设置一个计时器来按一定时间间隔检查文件还是有一个好方法对文件设置监视 FileSystemWatcher 没有帮助 Win32 FindFirst
  • VBA 中的求和函数

    我在 vba 中对单元格求和时遇到问题 我需要使用单元格 a b Range A1 function SUM Range Cells 2 1 Cells 3 2 但它不起作用 函数不是范围内的属性 方法 如果您想对值求和 请使用以下命令 R
  • 在没有 ODBC 的情况下从 Java 操作 Access 数据库

    我想从我的 Java 项目操作 Microsoft Access 数据库 accdb 或 mdb 文件 我不想使用 Microsoft 的 JDBC ODBC Bridge 和 Access ODBC 驱动程序 因为 JDBC ODBC 桥
  • Oracle:如何查找模式中上次更新(任何表)的时间戳?

    有一个Oracle数据库模式 数据很小 但仍然有10 15个表左右 它包含一种配置 路由表 有一个应用程序必须不时轮询此架构 不得使用通知 如果架构中没有数据更新 应用程序应使用其当前的内存版本 如果任何表有任何更新 应用程序应将所有表重新
  • Excel宏隐藏特定单元格和合并区域

    我试图根据另一个单元格的值隐藏特定单元格 到目前为止 我设法隐藏整行 但无法隐藏特定单元格 Local Currency value show hide item If Range Currency Value USD Then Range
  • VB FFT - 难以理解结果与频率的关系

    试图理解我正在使用的 fft 快速傅里叶变换 例程 窃取 回收 输入是 512 个数据点的数组 它们是样本波形 测试数据生成到该数组中 fft 将该数组变换到频域 尝试理解频率 周期 采样率和 fft 数组中位置之间的关系 我用例子来说明
  • 规范化现有的 MS Access 数据库

    我有一个大型访问数据库 需要将其规范化为五个表和一个查找表 我了解标准化背后的理论 并且已经勾勒出表格的外观 但我不知道如何转换我的表格以使数据库标准化 表分析器没有提供我想要的细分 如果您只有一个表 请向其中添加自动编号字段 然后创建其他
  • VBA删除列中的单元格并根据单元格的值左移?

    如果单元格为空 如何删除 B 列 和左移 中的单元格 下面是我所拥有的 但它给出了 应用程序定义或对象定义的错误 Sub DeleteCellShiftLeft For i 1000 To 1 Step 1 If Cells i B Val

随机推荐

  • 猪参考

    我正在学习 Hadoop Pig 并且我总是坚持引用元素 请查找下面的示例 groupwordcount group chararray words bag of tokenTuples from line token chararray
  • 隐式方法组转换陷阱

    我想知道为什么给定代码的输出 在 LinqPad 中执行 void Main Compare1 Action Main Dump Compare2 Main Dump bool Compare1 Delegate x return x Ac
  • 泛型与接口的实际优势

    在这种情况下 使用泛型与接口的实际优势是什么 void MyMethod IFoo f void MyMethod
  • 推送通知需要很长时间才能到达

    我在适用于 iOS 和 Android 的 Adob e Air 应用程序中遇到推送通知的奇怪问题 我正在使用 Milkman Games 的 Easy Push ANE 以及 One Signal 服务 问题是通知确实会到达 但有时 随机
  • 如何在 couchdb 视图中调用另一个视图?

    我刚刚读完 couchdb 权威指南 一书 并开始摆弄设计文档 然而有一件事我不明白 到目前为止我看到的所有例子都有些线性 Example id 1 rev name first something blue child 2 id 2 re
  • 如何获取 Android 中临时文件的文件大小?

    如果我使用 openFileOutput 创建并写入临时文件 写入完成后如何获取文件大小 我希望这可以帮助你 File file new File selectedPath int file size Integer parseInt St
  • C++ 中的单例和抽象基类

    最近我遇到了关于实现 Singleton 但涉及抽象基类的问题 假设我们有这样的类层次结构 class IFoo it s ABC class Foo public IFoo 我们的单例类定义如下 template
  • 在 sed 命令和范围地址中使用不同的分隔符

    我在 shell 脚本中使用 sed 来编辑文件系统路径名 假设我想替换 foo bar with baz qux 然而 sed 的s 命令使用正斜杠 作为分隔符 如果我这样做 我会看到发出一条错误消息 例如 sed s foo bar b
  • Android LayerDrawable.setDrawableByLayerId 不适用于 HTC Sensation(和其他?)

    我正在使用 LayerDrawable 在底层图像 索引 0 上构建一系列热点 索引 1 热点是根据用户界面交互添加的 并且它们的位置是动态的 因此我以编程方式完成所有这些操作 而不是使用 XML 作为进一步 可能不相关 的细节 我使用 F
  • linkedin js 如何是有效的 javascript

    LinkedIn Javascript 集成是通过以下方式完成的 我不明白 这怎么是一个有效的javascript 为什么 api key 没有被引用 脚本标签的主体带有src永远不会被执行 但是 加载的脚本可以像访问任何其他元素的内容一样
  • 从流程图中获取数据系列的颜色

    在看到 stackoverflow 用户页面上很酷的新 声誉 选项卡后 我受到启发 开始尝试使用 Flot 图表库 我有一个包含数百个系列的折线图 在任何给定时间 这些系列中只有几个是可见的 我的数据系列分为几个 类别 我根据该类别分配数字
  • 迁移大型 Core Data 数据库崩溃

    我有一个将产品存储在核心数据文件中的应用程序 这些产品包括作为 可转换 数据的图像 现在我尝试使用轻量级迁移添加一些属性 当我使用一个小型数据库对其进行测试时 它运行良好 但当我使用一个接近 500 MB 的大型数据库时 应用程序通常会因内
  • 我们如何将数据从一个打开的表单传递到另一个打开的表单?

    winform中如何将数据从一个窗体传递到另一个打开的窗体 在 Windows 应用程序中 一个窗体打开另一个窗体 当我在父表单中输入一些数据时 这些数据将立即反映在另一个子表单中 这将如何发生 取决于你想要多花哨 最简单的方法就是直接调用
  • Kerberos 缓存票证

    我使用的是 Windows 7 64 位 我创建了一个简单的应用程序来对实现 PrivilegedAction 的类的 run 方法中的文件进行计数 以下是我的 jaas conf 文件 CountFiles com sun securit
  • 如何使用 django Rest 框架保存多对多字段对象

    我有博客 发布 标签三个模型 在博客模型中 我将字段 postedin 作为发布模型的外键 将 标签 作为标签模型的许多字段 模型 py class Posted models Model name models CharField Pos
  • 回显 unicode 字符

    我想通过运行bat 文件在cmd 中回显unicode 字符 我准备了一个简短的脚本 echo off SET message G p3 echo message pause 我怎样才能做到这一点 是否可以直接将这封信放入代码中 这样做 两
  • 避免集合已修改错误

    Issue 我有以下代码 foreach var ItemA in GenericListInstanceB ItemA MethodThatCouldRemoveAnyItemInGenericListInstanceB 显然我得到一个错
  • 尝试在空对象引用上调用虚拟方法“java.lang.String org.jsoup.nodes.Element.ownText()”

    我正在使用下面的代码来获取版本名称 from 应用商店通过使用 jsoup 我正在获取详细信息 但它引发了一些异常 我的代码是 public class ForceUpdateAsync extends AsyncTask
  • 将对象直接存储到 ValueStack/ActionContext 的目的是什么?

    根据我的研究 我看到了诸如
  • schema.ini 文件不适用于 MS Access

    我有一堆 csv 文件 我通过 VBA 将它们导入到 Access 中的表中 我在与导入的 csv 文件相同的目录中还有一个 schema ini 文件 尽管在 ini 文件中字段被指定为双精度类型 但它们在 Access 中会转换为文本类