如何更改我的 T-SQL 查询以覆盖 csv 文件而不是向其附加数据?
How to change my T-SQL query to overwrite a csv file rather than append data to it?
我每天使用 SQL 服务器代理作业将以下 T-SQL 代码配置为 运行。我的数据库 运行ning 在 SQL Server 2012 上。
INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0','Text;Database=C:\;HDR=YES;FMT=Delimited','SELECT * FROM [myfile.csv]')
SELECT ReservationStayID,NameTitle,FirstName,LastName,ArrivalDate,DepartureDate FROM [GuestNameInfo]
我的问题是此查询的输出被附加到 csv
文件中的现有记录。每当 SQL 服务器代理作业为 运行.
时,我希望输出覆盖现有内容
如何修改我的查询以实现此目的?
我建议先将您现有的 myfile.csv 重命名为其他名称(例如 myfile_[DateOfLastRun].csv)。然后重新开始 myfile.csv。这样,如果在此过程之外出现问题并且您需要之前 myfile.csv 和 day/week/month 中的任何内容,您就可以得到它。
您可以在 BAT 文件中为此使用 BCP:
set vardate=%DATE:~4,10%
set varDateWithoutSlashes=%vardate:/=-%
bcp "SELECT someColumns FROM aTable" queryout myFile_%varDateWithoutSlashes%.csv -t, -c -T
上面的示例创建了名称中已有日期的 CSV。您也可以重命名现有文件,然后创建不带日期的新 myfile.csv:
set vardate=%DATE:~4,10%
set varDateWithoutSlashes=%vardate:/=-%
ren myFile.csv myFile_%varDateWithoutSlashes%.csv
bcp "SELECT someColumns FROM aTable" queryout myFile.csv -t, -c -T
一定要在某处内置旧文件清理功能 - 这甚至可以在与此文件相同的批处理过程中完成。
您可以将数据库名称和服务器名称添加到 bcp 行 - 默认情况下它连接到本地服务器和用户的默认数据库(请参阅 BCP documentation link 了解更多选项)
bcp databaseName "SELECT someColumns FROM aTable" queryout myFile.csv -t, -c -T -S serverName
我每天使用 SQL 服务器代理作业将以下 T-SQL 代码配置为 运行。我的数据库 运行ning 在 SQL Server 2012 上。
INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0','Text;Database=C:\;HDR=YES;FMT=Delimited','SELECT * FROM [myfile.csv]')
SELECT ReservationStayID,NameTitle,FirstName,LastName,ArrivalDate,DepartureDate FROM [GuestNameInfo]
我的问题是此查询的输出被附加到 csv
文件中的现有记录。每当 SQL 服务器代理作业为 运行.
如何修改我的查询以实现此目的?
我建议先将您现有的 myfile.csv 重命名为其他名称(例如 myfile_[DateOfLastRun].csv)。然后重新开始 myfile.csv。这样,如果在此过程之外出现问题并且您需要之前 myfile.csv 和 day/week/month 中的任何内容,您就可以得到它。
您可以在 BAT 文件中为此使用 BCP:
set vardate=%DATE:~4,10%
set varDateWithoutSlashes=%vardate:/=-%
bcp "SELECT someColumns FROM aTable" queryout myFile_%varDateWithoutSlashes%.csv -t, -c -T
上面的示例创建了名称中已有日期的 CSV。您也可以重命名现有文件,然后创建不带日期的新 myfile.csv:
set vardate=%DATE:~4,10%
set varDateWithoutSlashes=%vardate:/=-%
ren myFile.csv myFile_%varDateWithoutSlashes%.csv
bcp "SELECT someColumns FROM aTable" queryout myFile.csv -t, -c -T
一定要在某处内置旧文件清理功能 - 这甚至可以在与此文件相同的批处理过程中完成。
您可以将数据库名称和服务器名称添加到 bcp 行 - 默认情况下它连接到本地服务器和用户的默认数据库(请参阅 BCP documentation link 了解更多选项)
bcp databaseName "SELECT someColumns FROM aTable" queryout myFile.csv -t, -c -T -S serverName