2015-04-01 99 views
1

当我导入CSV或文本文件并将其批量插入到我的数据库时,该过程成功将所有记录添加到表中。BULK INSERT导入文本文件

我的问题是插入的字符串是阿拉伯语,在我的数据库表中显示为符号。我怎么解决这个问题?

+1

您使用的数据库是? – Nicholas 2015-04-01 03:45:15

+0

我使用Sql DB,请注意,当我插入cmd nonquery它正确存储在数据库中,但是当我使用批量插入时出现此问题。 – 2015-04-01 12:07:46

+0

我已经添加了一些更多的信息,如果它仍然无法正常工作,请详细说明您目前的工作。 – Nicholas 2015-04-01 21:44:39

回答

0

插入使用查询

你需要选择一个阿拉伯语的排序规则的VARCHAR/CHAR列或使用Unicode(NCHAR/NVARCHAR)。

CREATE TABLE MyTable 
(
    MyArabicColumn VARCHAR(100) COLLATE Arabic_CI_AI_KS_WS, 
    MyNVarCharColumn NVARCHAR(100) 
) 

这两列应该工作。从文件

This article

批量插入解释插入Unicode的如何批量字符。

测试表

USE AdventureWorks2012; 
GO 
CREATE TABLE myTestUniCharData (
    Col1 smallint, 
    Col2 nvarchar(50), 
    Col3 nvarchar(50) 
    ); 

大容量插入

DATAFILETYPE='widechar'允许使用Unicode字符格式的时散导入数据。

USE AdventureWorks2012; 
GO 
BULK INSERT myTestUniCharData 
    FROM 'C:\myTestUniCharData-w.Dat' 
    WITH (
     DATAFILETYPE='widechar', 
     FIELDTERMINATOR=',' 
    ); 
GO 
SELECT Col1,Col2,Col3 FROM myTestUniCharData; 
GO 
+0

//query to read data from txt file and insert it in the tabel in DB //textBox1.Text is contain the path and name of .txt file //comboBox1 is contain all tabels im DB cmd = new SqlCommand(@"BULK INSERT " + comboBox1.SelectedValue + " FROM '" + textBox1.Text + @"' WITH (DATAFILETYPE='widechar',KEEPIDENTITY,Keepnulls,FIRSTROW = 2, fieldterminator = "[email protected]"',\t', rowterminator =" + @" '\n')", cn); cmd.ExecuteNonQuery(); 2015-04-17 04:28:41

+0

你能否用适当的格式将此添加到你的问题? – Nicholas 2015-04-21 05:14:01