BCP整个记录到sql server表中的一个字段

时间:2013-11-19 14:06:06

标签: c# sql-server bcp

我使用批量复制将(大)文本文件插入SQL服务器。到现在为止我总是使用像这样的表

创建表mijndatabase.dbo.invoer ( veld varchar(max) ) 然后我使用以下DOS批处理文件

bcp mijndatabase.dbo.invoer在C:\ pad \ bestand.txt -c -T -S AC01 \ ST01

或者在C#中

            string command = @"bcp mijndatabase.dbo.invoer in C:\pad\bestand.txt -c -T -S AC01\ST01"

            ProcessStartInfo procStartInfo = new ProcessStartInfo("cmd", "/c " + command);
            procStartInfo.RedirectStandardOutput = true;
            procStartInfo.UseShellExecute = false;
            procStartInfo.CreateNoWindow = true;

            using (Process proc = new Process())
            {
                proc.StartInfo = procStartInfo;
                proc.Start();
                proc.WaitForExit();

            }

当我想将文件批量复制到多字段表中的字段而不拆分输入文件时,我应该怎么做才能说我有一个表

创建表mijndatabase.dbo.invoer2 ( nr int identity(1,1), veld1 varchar(max), veld2 varchar(1000), veld3 varchar(1000) )

并且应将输入文件批量复制到veld1,不应使用其他字段。

怎么做,是否有额外的参数可供使用?

非常感谢任何帮助。

此致

约翰

1 个答案:

答案 0 :(得分:0)

使用格式文件跳过不需要的字段。以下是BDN命令的MSDN链接。

http://msdn.microsoft.com/en-us/library/ms162802.aspx

确保字段具有默认值。身份本身就很好,只需为所有其他领域定义。

以下是我在BCP / BULK INSERT上做过的一些文章。

http://craftydba.com/?tag=export

如果你还有疑问,请大声说。

我需要一些示例数据和确切的表定义(TSQL)来为您提供更详细的信息。

[ - 来自用户的电子邮件,包含更多信息 - ]

我使用下表将数据导入

 CREATE TABLE [dbo].[t_000_invoerbcp_01]
(
    [volgnr_01] [int] IDENTITY(1,1) NOT NULL,
    [veld_1_01] [varchar](max) NULL,
    [veld_2_01] [varchar](1000) NULL,
    [veld_3_01] [varchar](1000) NULL,
    [veld_4_01] [varchar](1000) NULL,
    [veld_5_01] [varchar](1000) NULL
)

Crafty DBA修改了用户提供的以下格式文件。

10.0
6
1       SQLCHAR         0       0       "\t"     0     volgnr_01          ""
2       SQLCHAR         0       0       "\t"     2     veld_1_01          SQL_Latin1_General_CP1_CI_AS
3       SQLCHAR         0       0       "\t"     0     veld_2_01          ""
4       SQLCHAR         0       0       "\t"     0     veld_3_01          ""
5       SQLCHAR         0       0       "\t"     0     veld_4_01          ""
6       SQLCHAR         0       0       "\r\n"   0     veld_5_01          ""

varchar(MAX)的定义与0的长度相同。请参阅msdn文章。

http://technet.microsoft.com/en-us/library/ms177478.aspx

要跳过字段,请将数据长度和列顺序设为空白。请参阅msdn文章。

http://technet.microsoft.com/en-us/library/ms179250.aspx

同样,如果您不想要NULL值,则必须定义默认值。

我希望这个修改后的格式文件适合您。