Informix 从文件加载 header
Informix LOAD FROM file with header
我正在使用 Informix LOAD FROM 命令将数据从 CSV 文件批量插入数据库 table,例如:
LOAD FROM "file.csv" DELIMITER ";" INSERT INTO table_name(col1, col2, col3)
问题是,每个 CSV 文件的第一行包含列 headers。有什么方法可以告诉 Informix 第一行应该被忽略吗?
没有;没有办法告诉标准 Informix LOAD statement 跳过 header 行。还要注意,它不会从 CSV 格式的字段周围删除引号,也不会按照 CSV 格式正式期望的方式处理事情(尽管如此,因为你有 semicolon-separated 值而不是 comma-separated 值,它很难知道正在遵循哪些规则 — 也要对反斜杠的处理持谨慎态度。
您也许能够使用 Informix DB-Load 实用程序(dbload
) instead; it depends on whether your data is simply using ;
in place of Informix's default |
delimiter, or whether you have more of the semantics of CSV such as quotes around fields that need to be removed. If you want to get exotic, the Informix High-Performance Loader (HPL) 可以在本地处理它或经过培训来处理它。
或者,您可以考虑使用我的* SQLCMD 程序(它被称为 sqlcmd
的时间比 Microsoft 的 johnny-come-lately相同的名称),它允许您指定:
LOAD FROM "file.csv" DELIMITER ";" SKIP 1 INSERT INTO table_name(col1, col2, col3);
SQLCMD 还有一个选项 FORMAT CSV(以及其他格式)可能相关也可能不相关。它处理诸如从完整 CSV 标准支持的字段周围剥离引号之类的事情。
您需要安装 Informix ClientSDK 和 C 编译器(以及 C 开发系统的其余部分)才能构建 SQLCMD。
* 由于 SQLCMD 是我的程序,因为它是我编写的,所以任何使用它的建议在本质上都是有偏见的;你被警告了。
您也可以考虑 'external table' (CREATE EXTERNAL TABLE),但我不确定它是否比 LOAD 语句更好,无论是支持的格式还是跳过第一行数据。
当我使用 LOAD FROM 将 CSV 文件加载到 Informix 中时,我通常加载到一个临时的 table,这是我随后使用的所有字符列。您只需删除 header 行。基本上你只需将整个文件放入一个更容易使用的临时 table 中。
我正在使用 Informix LOAD FROM 命令将数据从 CSV 文件批量插入数据库 table,例如:
LOAD FROM "file.csv" DELIMITER ";" INSERT INTO table_name(col1, col2, col3)
问题是,每个 CSV 文件的第一行包含列 headers。有什么方法可以告诉 Informix 第一行应该被忽略吗?
没有;没有办法告诉标准 Informix LOAD statement 跳过 header 行。还要注意,它不会从 CSV 格式的字段周围删除引号,也不会按照 CSV 格式正式期望的方式处理事情(尽管如此,因为你有 semicolon-separated 值而不是 comma-separated 值,它很难知道正在遵循哪些规则 — 也要对反斜杠的处理持谨慎态度。
您也许能够使用 Informix DB-Load 实用程序(dbload
) instead; it depends on whether your data is simply using ;
in place of Informix's default |
delimiter, or whether you have more of the semantics of CSV such as quotes around fields that need to be removed. If you want to get exotic, the Informix High-Performance Loader (HPL) 可以在本地处理它或经过培训来处理它。
或者,您可以考虑使用我的* SQLCMD 程序(它被称为 sqlcmd
的时间比 Microsoft 的 johnny-come-lately相同的名称),它允许您指定:
LOAD FROM "file.csv" DELIMITER ";" SKIP 1 INSERT INTO table_name(col1, col2, col3);
SQLCMD 还有一个选项 FORMAT CSV(以及其他格式)可能相关也可能不相关。它处理诸如从完整 CSV 标准支持的字段周围剥离引号之类的事情。
您需要安装 Informix ClientSDK 和 C 编译器(以及 C 开发系统的其余部分)才能构建 SQLCMD。
* 由于 SQLCMD 是我的程序,因为它是我编写的,所以任何使用它的建议在本质上都是有偏见的;你被警告了。
您也可以考虑 'external table' (CREATE EXTERNAL TABLE),但我不确定它是否比 LOAD 语句更好,无论是支持的格式还是跳过第一行数据。
当我使用 LOAD FROM 将 CSV 文件加载到 Informix 中时,我通常加载到一个临时的 table,这是我随后使用的所有字符列。您只需删除 header 行。基本上你只需将整个文件放入一个更容易使用的临时 table 中。