如何将两个 CSV(Header 和内容分开)添加到 SQL 服务器?

How do I add two CSVs (Header and Content seperatly) into SQL Server?

我收到了来自 SAP 的原始数据,我需要将其添加到一个本地数据库中。我遇到的问题是每个 table.

我收到了两个单独的数据集

就我能够研究(和尝试)而言,我只能将它们添加为平面文件,这意味着我只能添加其中一个文件。要么完全缺少 header,要么缺少输入数据。

在一个 CSV 文件中手动合并它们意味着丢失所有附加信息(类型、主键、非空等),对吗?

知道我该如何继续吗?

谢谢你帮我。

很高兴在这里学到新东西。

样本header:

+-------------------------------+
|             Col1              |
+-------------------------------+
| TABNAME CHAR 000030 000000    |
| DDLANGUAGE LANG 000001 000000 |
| ...                           |
+-------------------------------+

示例数据:

+------+-------+------+------+-----+
| Col1 | Col2  | Col3 | Col4 | ... |
+------+-------+------+------+-----+
| LFB1 | ZBOKD | A    | ...  | ... |
| ...  | ...   | ...  | ...  | ... |
+------+-------+------+------+-----+

合并后他们会喜欢这个(如果我没记错的话,他们需要看起来像那样):

+---------+------------+-----+-----+
| TABNAME | DDLANGUAGE | ... | ... |
+---------+------------+-----+-----+
| LFB1    | ZBOKD      | A   | ... |
| ...     | ...        | ... | ... |
+---------+------------+-----+-----+

你会想要 CREATE TABLE, and then BULK INSERT 进入它。

  • 打开您的 header 文件并确定列名和数据类型是什么
  • 根据 header 文件中的信息在 SQL 服务器中创建 table
  • 数据文件批量插入到您的table

即使 header 和数据在同一个文件中,您也会 忽略 第一行,因为它不包含数据。

create table myTable (Col1 <datatype>, Col2 <datatype>, ...)
go

bulk insert myTable
from 'c:\somedirectory\somefile.csv'
   with(
        FIRSTROW = 1
        ,FIELDTERMINATOR = ','
        ,ROWTERMINATOR = '\n'
        ,ERRORFILE = 'c:\someDir\yourErrorFile')

逗号分隔 files can be a pain,主要是任何列中的任何值都可以包含逗号。在这种情况下,SQL 服务器会将其视为该列的末尾。如果是这种情况,您需要在 PowerShell 中的 SQL 服务器或 Python 或其他任何东西之外做一些事情,以使您的文件制表符分隔,或由另一个在任何地方都找不到的特殊字符分隔数据。

此外,您的 ROWTERMINATOR 可能需要 '0x1E' 或其他值,具体取决于源系统。将文件拖放到 NotePad++ 或其他可以看到 Unicode 符号的文本编辑器中。