标签:环境变量 code data db_name col pre asc shel 导出数据
在我们的日常开发过程中,我们会遇到需要将数据库中的是数据导出到本地的txt文件中,或者将本地TXT文件中的数据导入到数据库。
为了方便开发人员的工作,SQL Server为我们提供了BCP 工具帮助我们导入,导出数据。
如果想使用BCP,需要现在本地安装SQLCMD
X64:
https://go.microsoft.com/fwlink/?linkid=2142258
X86:
https://go.microsoft.com/fwlink/?linkid=2142257
你可以参考官方文档:
https://docs.microsoft.com/zh-cn/sql/tools/bcp-utility?view=sql-server-ver15
BCP命令是控制台命令,但为了方便,我们也可以通过SSMS运行。如果你想在自己的SSMS 上执行BCP 命令,需要在你的SSMS 执行以下命令:
--打开高级选项 EXEC SP_CONFIGURE ‘show advanced options‘, 1; RECONFIGURE; --启用执行CMD命令 EXEC SP_CONFIGURE ‘xp_cmdshell‘, 1; RECONFIGURE;
导出数据:
下面是相同的代码分别在控制台执行和SSMS执行:
控制台:
bcp db_name.dbo.T_tablename out c:\a.txt -c -T
bcp db_name.dbo.T_tablename out c:\a.txt -c -Uusername -Pxxxxx
SSMS:
exec master..xp_cmdshell ‘bcp db_name.dbo.T_tablename out c:\a.txt -c -T‘ --"-T"信任连接
exec master..xp_cmdshell ‘bcp db_name.dbo.T_tablename out c:\a.txt -c -Usa -Pxxxxx‘
T指定 bcp 使用网络用户的安全凭据,通过信任连接连接到 SQL Server。不需要 login_id 和 password。
如果不是使用T需要加上-U和-P参数输入用户名和密码
如果是本地导入导出可以不加-S参数,如果连接到远程服务需要加-S参数
bcp db_name.dbo.tablename out d:\table.txt -c -q -S"120.26.76.220,1833" -U"sa" -P"password"。
BCP 还可以对表进行过滤,然后将过滤后的数据导出:
bcp "SELECT DisplayName,Identifier,CustomerValue FROM [Database].[dbo].[FindInterfaceVocabularyLookup] ()" queryout d:\Data\Test.txt -c -r\n -T -t"|"
SELECT TOP 20 * FROM db_name.dbo.T_tablename" queryout c:\table2.txt -c -U"sa" -P"password"‘
导入:
同样BCP亦可将数据导入数据. 此时只需将 out 改为 in
字符 <、>、|、&、^ 是特殊的命令 shell 字符,在字符串中使用这些字符时,必须在它们前面加上转义符 (^) 或用引号将其引起来(例如“StringContaining&Symbol”)。 如果使用引号将包含某个特殊字符的字符串引起来,则引号将设置为环境变量值的一部分。
2.在导入数据时,行分隔符建议使用十六进制ASCLL码表示,如例子BCP MigrationSandbox.dbo.RXNCONSO in d:\Data\Test.txt-c -r\n -T -t"|" -r 0x0a. 就是使用0x0a表示\n.如果你的程序提示字符太长的错误,可以考虑此解决方案
本文意在提供简单示例,帮助快速写出代码,如需更多详情,请参照官方文档:
https://docs.microsoft.com/zh-cn/sql/tools/bcp-utility?view=sql-server-ver15
标签:环境变量 code data db_name col pre asc shel 导出数据
原文地址:https://www.cnblogs.com/xinyublog/p/14433405.html