如何将查询结果导出到SQL Server 2008中的.csv文件?
我想将一些SQL Server 2005数据导出为CSV格式(用逗号分隔引号).我可以想到很多复杂的方法,但我想以正确的方式做到这一点.我看过bcp,但我无法弄清楚如何在字段周围添加引号(除了将它们连接到字段值,这很难看).我想我可以用sqlcmd和-o做到这一点,但出于同样的原因,这似乎很难看.
有没有bcp方式来做到这一点?
有合理的sqlcmd方法吗?
管理工作室内置了一些非常简单的实用工具吗?
例如,在运行查询并查看输出之后
select * from People
我的输出如下
First Last Email
Ray Smith raysmith@whatever.itis
Run Code Online (Sandbox Code Playgroud)
如何导出此数据,使其如下所示?
"Ray","Smith","raysmith@whatever.itis"
Run Code Online (Sandbox Code Playgroud)
或者有没有办法在SQL中执行此操作以修改包含引号的记录?
因为当你导出时,无论如何都会包含逗号,对吧?
我想在SQL服务器中使用select查询生成CSV文件.
下面的代码在mySQL中正常工作:
select * into outfile 'd:/report.csv' fields terminated by ',' from tableName;
Run Code Online (Sandbox Code Playgroud)
它生成了CSV文件.
有谁知道如何在SQL服务器中使用select查询创建CSV文件?
我正在从SqlDataReader生成一个csv文件,但是它没有写出列名,我怎么能让它写出来?我正在使用的代码如下:
SqlConnection conn = new SqlConnection(myconn);
SqlCommand cmd = new SqlCommand("dbo.test", conn);
cmd.CommandType = CommandType.StoredProcedure;
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
StringBuilder sb = new StringBuilder();
StreamWriter sw = new StreamWriter(myfilePath + "testfile.csv");
while (reader.Read())
{
for (int i = 0; i < reader.FieldCount; i++)
{
string value = reader[i].ToString();
if (value.Contains(","))
value = "\"" + value + "\"";
sb.Append(value.Replace(Environment.NewLine, " ") + ",");
}
sb.Length--; // Remove the last comma
sb.AppendLine();
}
conn.Close();
sw.Write(sb.ToString());
sw.Close();
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种批量导出SQL Server表到csv文件的方法.
有一些使用sqlcmd或bcp的解决方案,但到目前为止,我找不到任何正确转义引号,逗号或换行符的解决方案.
例如,此命令创建一个不错的csv,但忽略了引号和逗号,这使得csv文件无法使用:
bcp MyDatabase..MyTable out c:\test.csv -c -T -t, -r\n -S MYPC
Run Code Online (Sandbox Code Playgroud)
从我的四行示例数据中,每行包含一些其他特殊字符,这将创建一个这样的文件:
1,contains " quote
2,contains , comma
3,contains ; semi
4,contains ' single quote
Run Code Online (Sandbox Code Playgroud)
由于引号和逗号,其他程序无法导入.当然,我可以改变分离器标签或管道符号,但是这不能解决真正的问题:无论分隔符是,如果它的数据存在,它会使导出文件不可用.
那么如何使用标准SQL工具(如BCP,sqlcmd或类似工具)批量导出批量数据到工作的csv文件?
我有一个填满记录的部门表.我想运行查询或使用管理工作室界面将部门记录导出到Excel文件.格式不是问题,我只想将记录转储到excel中.我知道我可以复制和粘贴,但这不是我想要的.