Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql VB.net批量插入_Sql_Sql Server_Vb.net - Fatal编程技术网

Sql VB.net批量插入

Sql VB.net批量插入,sql,sql-server,vb.net,Sql,Sql Server,Vb.net,这是关于“批量插入”sql命令的问题,我对一些法语口音有问题。从文本文件中插入“a”或“a acute”后,它们在数据库表中显示为n++。这是唯一一个当前转换有问题的字符。我试图使用'WITH'子句修改命令,并赋值,如'RAW'或'1252'或'ACP',但没有一个能够保留此特定字符。我使用的数据库是Sql Server 2008。非常感谢您的帮助。谢谢 仅供参考,我没有使用任何编码或解码技术。只是尝试将文本文件中的内容放回数据库 谢谢你的回复。然而,将列类型从“varchar”更改为“nva

这是关于“批量插入”sql命令的问题,我对一些法语口音有问题。从文本文件中插入“a”或“a acute”后,它们在数据库表中显示为n++。这是唯一一个当前转换有问题的字符。我试图使用'WITH'子句修改命令,并赋值,如'RAW'或'1252'或'ACP',但没有一个能够保留此特定字符。我使用的数据库是Sql Server 2008。非常感谢您的帮助。谢谢

仅供参考,我没有使用任何编码或解码技术。只是尝试将文本文件中的内容放回数据库



谢谢你的回复。然而,将列类型从“varchar”更改为“nvarchar”实际上并没有解决这个问题。它现在显示为'∩┐╜' 在数据库表列中。有人知道吗??提前非常感谢

将列类型更改为
nvarchar

正如Bridge所说,您需要
nvarchar
。您还需要将文件转换为UTF-16,因为即使在使用
NVARCHAR
时,
BULK INSERT
也不能很好地使用UTF-8

有关更多信息,请参阅

关于转换文件编码,这里有几个问题,但对于我来说,这很有效:

public static void  ConvertUtf8ToUtf16(string path, int bufferSize = 4096)
    {
    string  tempPath = path + ".tmp";

    char[]  buffer = new char[bufferSize];
    using (var input = File.OpenText(path))
    using (var output = new StreamWriter(tempPath, false, Encoding.Unicode))
        {
        int  index = 0;
        int  chars;
        while ((chars = input.Read(buffer, index, bufferSize)) > 0)
            output.Write(buffer, 0, chars);
        }

    // Swap the files
    File.Delete(path);
    File.Move(tempPath, path);
    }

这里出现了字符编码问题-请确保使用UTF-8。要将数据插入的列是什么数据类型?为了存储unicode数据,它需要是nvarchar或ntext(尽管这已经被贬低了),那时没有任何方法可以存储法语重音字符。如果要存储它们,您必须将列更改为nvarchar。您好,感谢您的回复。然而,将列类型从“varchar”更改为“nvarchar”实际上并没有解决这个问题。它现在显示为'∩┐╜' 在数据库表列中。任何想法。嗨,谢谢你的回复。然而,将列类型从“varchar”更改为“nvarchar”实际上并没有解决这个问题。它现在显示为'∩┐╜' 在数据库表列中。任何想法。附加信息:我正在将这些法语字符从文本文件插入数据库表。我使用批量插入来实现这一点。thanks@Sanjay-大容量插入文件不在UTF-16中,这是您的问题。因此,这意味着在执行大容量插入之前,我需要将文本文件转换为UTF-16,rite??byte[]utf8Bytes=Encoding.UTF8.GetBytes(“这是测试字符串”);byte[]unicodeBytes=Encoding.Convert(Encoding.UTF8,Encoding.Unicode,utf8Bytes);Encoding.Unicode.GetString(Unicode字节)\n\n这是我在大容量插入之前所做的操作。Encoding.Unicode.GetString(params)的输出正用于写入另一个文本文件。仍然得到一些垃圾输出。有人能告诉我转换到UTF16时是否做错了什么吗。。。感谢您的回复。然而,将列类型从“varchar”更改为“nvarchar”实际上并没有解决这个问题。它现在显示为'∩┐╜' 在数据库表列中。任何想法都不是全部解决方案。文件的字符编码是什么<代码>批量插入易受影响。