📜  使用 SQL Server 读取文本文件(1)

📅  最后修改于: 2023-12-03 14:49:46.861000             🧑  作者: Mango

使用 SQL Server 读取文本文件

在SQL Server中,我们可以使用OPENROWSET或BULK INSERT命令来读取文本文件。这两个命令都可以让我们将文本文件的内容导入到SQL Server表中。

使用OPENROWSET命令读取文本文件

OPENROWSET命令可以让我们打开与SQL Server实例无关的数据源,并可以从该数据源中选择数据。以下是使用OPENROWSET命令从文本文件中读取数据的步骤:

  1. 创建一个格式文件以映射文件中的数据到表中的列。格式文件可以手动创建,但最好的方法是使用bcp命令创建格式文件。例如,以下命令可以为逗号分隔符的文本文件mydata.txt创建格式文件mydata.fmt:

    bcp mydatabase..mytable format nul -c -f mydata.fmt -t,
    
  2. 创建一个表来存储从文本文件中读取的数据。表应该包含与格式文件中指定的列相同的列。

  3. 使用OPENROWSET命令从文本文件中选择数据并将其插入到表中:

    INSERT INTO mytable
    SELECT * FROM OPENROWSET(
       BULK 'C:\path\to\mydata.txt',
       FORMATFILE = 'C:\path\to\mydata.fmt'
    ) AS rows;
    

    此代码将从文件mydata.txt中读取数据,并使用格式文件mydata.fmt将数据插入到mytable表中。

使用BULK INSERT命令读取文本文件

BULK INSERT命令可以让我们将文本文件的内容直接插入到表中。以下是使用BULK INSERT命令从文本文件中读取数据的步骤:

  1. 创建一个表来存储从文本文件中读取的数据。表应该包含与文件中的列相同的列。

  2. 使用BULK INSERT命令从文本文件中选择数据并将其插入到表中。例如,以下命令可以将逗号分隔符的文本文件mydata.txt中的数据插入到mytable表中:

    BULK INSERT mytable
    FROM 'C:\path\to\mydata.txt'
    WITH (
        FORMAT = 'CSV',
        FIELDTERMINATOR = ',',
        ROWTERMINATOR = '\n'
    );
    

    在上面的命令中,FORMAT选项指定文件格式为CSV(逗号分隔符),FIELDTERMINATOR选项指定字段分隔符为逗号,ROWTERMINATOR选项指定行分隔符为换行符。

以上是使用 SQL Server 读取文本文件的两个方法,您可以根据自己的需要选择其中的一种,进行适当的更改并应用在您的代码中。