使用标头和引号从中导出SQL- BCP

时间:2019-09-16 11:52:08

标签: sql-server csv bcp

我正在尝试将数据从SQL视图导出到CSV。 CSV的格式如下:

“ SampleNo”,“ Analysis Code”,“ Analyte Name”,“ Old Result”,“ New Result”,“ ChangeDate”, “ AD03861”,“ $ AIR”,“ 1,2,4-三甲基苯”,“ --------”,“ 0.0001”,“ 12/28/2015 4:52:50 PM”,

我能够获得字段周围的引号,但没有标题。而且我可以获取标题但不带引号。我尝试将两者结合起来,并收到以下错误。

开始复制... SQLState = S0022,NativeError = 207 错误= [Microsoft] [SQL Server的ODBC驱动程序13] [SQL Server]无效的列名 e'SAMPNO'。 SQLState = S0022,NativeError = 207 错误= [Microsoft] [SQL Server的ODBC驱动程序13] [SQL Server]无效的列名 e'ACODE'。 SQLState = S0022,NativeError = 207 错误= [Microsoft] [SQL Server的ODBC驱动程序13] [SQL Server]无效的列名 e'ANLNAME'。 SQLState = S0022,NativeError = 207 错误= [Microsoft] [SQL Server的ODBC驱动程序13] [SQL Server]无效的列名 e'OLDRESULT'。 SQLState = S0022,NativeError = 207 错误= [Microsoft] [SQL Server的ODBC驱动程序13] [SQL Server]无效的列名 e'NEWRESULT'。 SQLState = S1000,NativeError = 0 错误= [Microsoft] [SQL Server的ODBC驱动程序13]无法解析列级别  校对

BCP复制失败

bcp "select CHAR(34)+SAMPNO+CHAR(34),CHAR(34)+ACODE+CHAR(34),CHAR(34)+ANLNAME+CHAR(34),CHAR(34)+OLDRESULT+CHAR(34),CHAR(34)+NEWRESULT+CHAR(34) union all select CHAR(34)+SAMPNO+CHAR(34),CHAR(34)+ACODE+CHAR(34),CHAR(34)+ANLNAME+CHAR(34),CHAR(34)+OLDRESULT+CHAR(34),CHAR(34)+NEWRESULT+CHAR(34) FROM TEST.dbo.MODIFY_EXPORT" QUERYOUT c:\temp\test.csv -S SERV2012R2 -U sa -P password -c -t","

2 个答案:

答案 0 :(得分:0)

尝试将标头用单引号引起来

const i18n = new VueI18n();
new Vue({
  el: rootElement,
  i18n,
  beforeCreate() {
    const vm = this;
    axios.get(url)
      .then((response) => {
        vm.$i18n.setLocaleMessage('en', response.data);
    });
  }
});

注意: 我更改了示例代码,以在示例输出中使用标题信息。

答案 1 :(得分:0)

我认为使用BCP处理带引号的数据元素的正确方法是使用格式文件。我过去曾给出过这个答案:

SQL Server BCP Bulk insert Pipe delimited with text qualifier format file

我认为这比在实际查询中添加引号更好的原因是引号不是您希望传输的数据。引号只是格式。因此,以后其他将阅读您的代码以将格式设置信息保留在BCP命令本身而不嵌套在查询中的人会更有意义。

获取包含在数据文件中的标头是一个单独的问题,您似乎可以通过“联合”查询正确地解决此问题,以将标头行和数据行与“ queryout”合并到一个结果中。

请注意,以这种方式将标头添加到文件中时,您仍然可能会遇到数据转换错误。因此,您必须将所有传出数据转换为“ char / varchar”数据类型。由于您使用“联合”将标头记录(默认情况下所有varchar数据,因为您未显式转换它们)与详细数据(可能是一些int,numeric,data数据类型混合在一起,存储在TEST中)混合了.dbo.MODIFY_EXPORT表),标题和详细信息查询都必须混合到一个结果中,并且两个查询之间每一列的数据类型都必须匹配。

请注意,您还可以将标头和明细记录作为两个单独的文件(2个单独的bcp命令)进行查询/ bcp,然后将它们与OS /脚本命令合并在一起。