'Syntax error in FROM clause' 或 'Syntax error in JOIN operation' 连接两个 CSV 文件时

'Syntax error in FROM clause' or 'Syntax error in JOIN operation' when joining two CSV files

我有两个包含棒球统计数据的 CSV 文件,我正尝试按如下方式加入,

SELECT 
    Master.playerID, Batting.RBI 
FROM 
    ([Master.csv] INNER JOIN [Batting.csv]) 
ON 
    (Master.playerID=Batting.playerID)

我已经编写了一个 C# 函数来使用 Jet 进行连接。我在查询单个 table 时没有遇到任何问题(示例查询 SELECT COUNT(playerId) FROM [Master.csv] 工作正常),但由于某种原因它不喜欢连接。

是因为MasterBattingtable无法识别吗?

附上我的 C# 代码的相关位,

string constr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
    FilePath + ";Extended Properties='text;HDR=Yes;FMT=Delimited;';";
OleDbConnection conn = new OleDbConnection(constr);
OleDbCommand command = new OleDbCommand(SQLStatement, conn);
conn.Open();
OleDbDataAdapter sda = new OleDbDataAdapter(command);
DataTable dt = new DataTable();
sda.Fill(dt);
sda.Dispose();
command.Dispose();
conn.Dispose();

sda.Fill(dt) 行抛出异常,SQLStatement 只是将查询字符串作为字符串传递给函数。

add:

SELECT m.playerID, b.RBI 
FROM [Master.csv] as m INNER JOIN
     [Batting.csv] as b
     ON m.playerID = b.playerID;

您可能需要更高级的语法来获取文件,但这修复了语法错误。

第 4 行的右括号(具有两个 table 名称的括号)不应存在。如果你真的想把 parens 关闭一个必须在 ON 子句之后,它在 JOIN 语法的固有部分(而不是 FROM 语法):

SELECT 
    Master.playerID, Batting.RBI 
FROM 
    ([Master.csv] INNER JOIN [Batting.csv] 
ON 
    (Master.playerID=Batting.playerID))

或者,省略额外的括号:

SELECT 
    Master.playerID, Batting.RBI 
FROM 
    [Master.csv] INNER JOIN [Batting.csv] 
ON 
    Master.playerID=Batting.playerID

我会将其格式化为:

SELECT 
    Master.playerID, Batting.RBI 
FROM 
    [Master.csv]
    INNER JOIN [Batting.csv] ON Master.playerID=Batting.playerID